gpt4 book ai didi

C++ 弃用从字符串常量到 'char*' 的转换

转载 作者:IT老高 更新时间:2023-10-28 11:32:06 26 4
gpt4 key购买 nike

我有一个带有 private char str[256];

的类

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

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

我称之为:

myClass obj("example");

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

deprecated conversion from string constant to 'char*'

为什么会这样?

最佳答案

这是您在遇到以下情况时看到的错误消息:

char* pointer_to_nonconst = "string literal";

为什么?好吧,C 和 C++ 在字符串文字的类型上有所不同。在 C 中,类型是 char 数组,而在 C++ 中,它是 constant char 数组。在任何情况下,您都不允许更改字符串文字的字符,因此 C++ 中的 const 并不是真正的限制,而是更多的类型安全。从 const char*char* 的转换通常不可能在没有显式转换的情况下出于安全原因。但是为了与 C 向后兼容,C++ 语言仍然允许将字符串文字分配给 char* 并警告您不推荐使用此转换。

因此,您的程序中某处缺少一个或多个 const 以保证 const 的正确性。但是您向我们展示的代码不是问题,因为它没有进行这种已弃用的转换。警告一定来自其他地方。

关于C++ 弃用从字符串常量到 'char*' 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1524356/

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