这个输出F~
,但我期待~F
#include <iostream>
struct Foo {
int _x;
operator const int & () const {return _x;}
~ Foo () {std :: cout << "~";}
};
void foo (const int &)
{
std :: cout << "F";
}
int main ()
{
foo (Foo ());
}
我将其构建为一个反例,以表明最重要的常量是一个例外而不是规则。它通常写成
当 const 引用绑定到临时对象时,该临时对象的生命周期会延长到引用的生命周期
我试图说明,虽然Foo()
是临时的,_x
但转换运算符返回的引用不是,并且上面的代码是不安全的。
但是输出似乎证明了该示例是安全的,临时对象的生命周期Foo()
因存在对其成员之一的 const 引用而延长。
这是正确的吗?这在标准中的什么地方有规定?