gpt4 book ai didi

字符串文字的 C++ const 正确性

转载 作者:IT老高 更新时间:2023-10-28 21:40:30 25 4
gpt4 key购买 nike

根据 C++ 标准,字符串字面量类型是 array of const char

auto constStr = "aaa";
char* nonConstStr = constStr; //Error here, cannot convert from 'const char *' to 'char *'
char* stillNonConstStr = "aaa"; //Why I don't have error here?

你能解释一下为什么在第 3 行我没有收到错误吗?

最佳答案

历史原因。即使字符串文字的类型是 const char 数组,过去也允许并且非常常见地将字符串文字分配给 char*。我相信它来自 C 不存在 const 的日子,但不要引用我的话。它后来被弃用,但仍然允许,以免破坏使用它的代码库。该允许不会扩展到允许 char*const char* (也不是从非文字的 const char 数组)初始化,这就是您的第二行失败的原因.在 C++11 中,禁止从字符串文字到 char* 的转换,但您的编译器可能还没有强制执行。

关于字符串文字的 C++ const 正确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15355257/

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