gpt4 book ai didi

c++ - 函数调用上下文中的 char 指针、char 数组和字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:50:08 26 4
gpt4 key购买 nike

不编译的行和编译的行有什么区别?不编译的行给出了这个警告:deprecated conversion from string constant to 'char*'

此外,我知道对传递给函数的字符串进行强制转换 (char *) 可以解决问题,但我想了解为什么在第 2 行编译正常时甚至需要这样做。

class Student {

public:

Student( char name[] ) {

}

}

int main() {

Student stud( "Kacy" ); //does not compile
char name[20] = "Kacy"; //compiles just fine

}

最佳答案

参数中的char[] 签名与char* 完全相同。在 C++ 中,将字符串常量 char const*(字符串 "Kacy")转换为 char* 是非法的,因为字符串是不可变的.

您的第二个示例可以编译,因为 name 是一个实际数组。 char* 没有变化。

作为解决方案,将您的参数更改为采用常量字符串数组:

Student(char const name[]);

这又是一样的

String(char const *name);

虽然你最好使用 std::string:

#include <string>

class String
{
public:
String(std::string name);
};

关于c++ - 函数调用上下文中的 char 指针、char 数组和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com