eiv*_*our 4 c++ pointers const literals lvalue
我知道左值可以转换成const引用.我很好奇我是否可以获得指向这些左值的指针.
如果我写
const int* p = &3; //ERROR: lvalue required as unary operand '&'
Run Code Online (Sandbox Code Playgroud)
我收到这个错误.然而,
const int* p = &((const int&)3);
Run Code Online (Sandbox Code Playgroud)
这个编译.在这种情况下,*p的结果是否保证为3?
这构造了一个临时的int(3)
并将其绑定到const引用.p
是指临时的.临时的生命周期被扩展为与引用的生命周期相匹配 - 但引用本身是临时的,并在分号处被销毁,留下p
悬空指针.p
之后使用的任何尝试(除了为其分配新值)都会表现出未定义的行为.