C++ 常量指向文字的指针有效吗?

c++ is const pointer to literal valid?

本文关键字:指针 有效 文字 常量 C++      更新时间:2023-10-16

我知道左值可以转换为常量引用。我很好奇我是否可以获得指向这些左值的指针。

如果我写

const int* p = &3; //ERROR: lvalue required as unary operand '&'

我收到此错误。然而

const int* p = &((const int&)3);

这将编译。在这种情况下,*p 的结果是否保证为 3?

这将构造一个临时int(3)并将其绑定到常量引用。p指出这是暂时的。临时的生存期延长以匹配引用的生存期 - 但引用本身是临时的,在分号处被破坏,留下p悬而未决的指针。之后使用p的任何尝试(除了为其分配新值(都会表现出未定义的行为。