C+反对将字符串常量转换为“char*”

C+反对将字符串常量转换为“char*”

我有一节课private char str[256];

为此,我有一个显式的构造函数:

explicit myClass(const char *func){
    strcpy(str,func);}

我称之为:

myClass obj("example");

当我编译它时,我会收到以下警告:

从字符串常量到“char*”的不推荐转换

为什么会发生这种事?



白衣染霜花
浏览 345回答 3
3回答

心有法竹

警告:从字符串常量到“char*”的不推荐转换是因为您在某个地方(而不是在您发布的代码中)做了这样的事情:void foo(char* str);foo("hello");问题在于,您正在尝试转换字符串文本(使用类型为const char[])到char*.您可以将const char[]到const char*因为数组会衰减到指针,但是您要做的是使一个可变的常量。这种转换可能是允许的C兼容性,并只是给你提到的警告。
打开App,查看更多内容
随时随地看视频慕课网APP