关于C++表达式static constexpr char const* const s_empty = ""的正确性验证
代码理解验证与纠正
先看这段代码:
static constexpr char const* const s_empty = "";
你的理解有部分正确,也有一处混淆,具体说明:
constexpr的理解完全正确:这个关键字让s_empty成为编译期可求值的常量,编译器会对它执行常量折叠优化,在编译阶段就确定其值,运行时直接使用预计算的常量结果。- 但你对指针const限定的逻辑搞反了:
char const*是指指针指向的内容不可被修改——你不能通过这个指针去改变它指向的字符数据;- 末尾的
const(也就是* const部分)才是指指针本身不可被赋值——这个指针变量一旦初始化后,就不能再指向其他内存地址。
内容的提问来源于stack exchange,提问作者Parag Paul
相关产品推荐
相关产品推荐

