此示例取自C ++ 11标准中的§8.5.3/ 5(第一个要点):
struct A { };
struct B : A { operator int&(); } b;
int& ri = B();
如果有,有没有办法在下面的代码中访问临时B()
?
#include <iostream>
struct A { };
struct B : A { int i; B(): i(10) {} operator int&() { return i; } } b;
int main()
{
int& ri = B();
std::cout << ri << '\n';
}
答案 0 :(得分:3)
不,像往常一样,临时B对象的析构函数在完整表达式的末尾运行。它不受任何参考的约束。
在第二个示例中,ri
是对生命周期已结束的int
对象的引用。