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

时间:2017-08-27 16:14:05

标签: c++ pointers const literals lvalue

我知道左值可以转换成const引用。如果我能得到指向这些左值的指针,我很好奇。

如果我写

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

我收到此错误。然而,

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

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

1 个答案:

答案 0 :(得分:8)

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