c ++是const指向文字有效的指针?

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?

Igo*_*nik 8

这构造了一个临时的int(3)并将其绑定到const引用.p是指临时的.临时的生命周期被扩展为与引用的生命周期相匹配 - 但引用本身是临时的,并在分号处被销毁,留下p悬空指针.p之后使用的任何尝试(除了为其分配新值)都会表现出未定义的行为.

  • @AndyG是的,我相信这是合法的.它只是磨机临时寿命的延长.一个不需要演员,可以写`const int&p = 3;` (2认同)