我有一堂课private char str[256];
private char str[256];
为此我有一个显式的构造函数:
explicit myClass(const char *func) { strcpy(str,func); }
我称之为:
myClass obj("example");
当我编译它时,我收到以下警告:
不推荐将字符串常量转换为 ‘char*’
为什么会这样?
这是您在遇到如下情况时看到的错误消息:
char* pointer_to_nonconst = "string literal";
为什么?好吧,C 和 C 在字符串文字的类型上有所不同。在 C 中,类型是 char 数组,而在 C 中,类型是 char 常量 数组。在任何情况下,您都不允许更改字符串文字的字符,因此 C 中的 const 并不是真正的限制,而是更多的类型安全。出于安全原因,如果没有明确的强制转换,从const char*to的转换char*通常是不可能的。但是为了与 C 向后兼容,C 语言仍然允许将字符串文字分配给 achar*并警告您不推荐使用此转换。
const char*
char*
因此,为了 const 的正确性,您在程序中缺少一个或多个consts。但是您向我们展示的代码不是问题,因为它没有进行这种已弃用的转换。警告一定来自其他地方。
const