getx()
返回哪个函数?显然,这是c++标准所禁止的
但我感兴趣的是这种限制的目的,不是参考的标准。< / p >
struct X
{
X& ref() { return *this; }
};
X getx() { return X();}
void g(X & x) {}
int f()
{
const X& x = getx(); // OK
X& x = getx(); // error
X& x = getx().ref(); // OK
g(getx()); //error
g(getx().ref()); //OK
return 0;
}
ref()
可以修改临时对象。ref()
允许你欺骗编译器并获得到这个临时对象的链接,这就解决了我们的问题。此外:
他们说“给const引用赋值一个临时对象可以延长这个对象的生命周期”和“尽管没有提到非const引用”。 我的额外的问题。下面的赋值是否会延长临时对象的生命周期?< / p >X& x = getx().ref(); // OK