我有一个私人课程char str[256];
为此我有一个显式的构造函数:
explicit myClass(char *func)
{
strcpy(str,func);
}
我称其为:
myClass obj("example");
当我编译这个时,我收到以下警告:
已弃用从字符串常量到“char*”的转换
为什么会发生这种情况?
这是每当您遇到如下情况时都会看到的错误消息:
char* pointer_to_nonconst = "string literal";
为什么? C 和 C++ 的不同之处在于字符串文字的类型。在 C 中,类型是 char 数组,在 C++ 中是constant字符数组。无论如何,您都不允许更改字符串文字的字符,因此 C++ 中的 const 并不是真正的限制,而更多的是类型安全的东西。转换自const char*
to char*
出于安全原因,如果没有显式强制转换,通常是不可能的。但为了与 C 向后兼容,C++ 语言仍然允许将字符串文字分配给char*
并向您发出有关此转换已被弃用的警告。
所以,在某个地方你缺少一个或多个const
s 在你的程序中以保证 const 的正确性。但您向我们展示的代码不是问题,因为它不执行这种已弃用的转换。该警告一定来自其他地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)