gpt4 book ai didi

c++ - constexpr const 与 constexpr 变量?

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

constexpr 意味着 const 似乎很明显,因此很常见:

constexpr int foo = 42; // no const here

但是如果你写:

constexpr char *const str = "foo";

如果传递了 -Wwrite-string 标志,则 GCC 将产生“警告:不推荐从字符串常量到‘char*’的转换”。

写作:

constexpr const char *const str = "foo";

解决问题。

那么 constexpr const 和 constexpr 真的一样吗?

最佳答案

问题在于,在变量声明中,constexpr 总是将 const-ness 应用于声明的对象;另一方面,const 可以应用于不同的类型,具体取决于位置。

这样

constexpr const int i = 3;
constexpr int i = 3;

等价的;

constexpr char* p = nullptr;
constexpr char* const p = nullptr;

是等价的;两者都使 p 成为 const 指向 char 的指针。

constexpr const char* p = nullptr;
constexpr const char* const p = nullptr;

是等价的。 constexpr 使 p 成为 const 指针。 const char * 中的 const 使 p 指向 const char

关于c++ - constexpr const 与 constexpr 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28845058/

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