关于C++中引用的问题~~~
class A {
public:
A(int a) {}
void foo() const {}
...
};
const A &func() {...}
这里func返回的算是引用吧?
如果这里我在函数里写
return 1;
就算是返回临时对象的引用了吧.
通常我们都会认为在函数结束时,这个临时对象就应该销毁了.所以认为这种代码是要出错的.
但在C++标准里,如果临时对象被绑定到引用,那么,这个临时对象的生命周期就要延长到引用结束.
如果我写
func().foo();
那这时,func()产生的引用一直存在,直到这个表达式结束.所以这时,应该是在这个表达式结束之后(foo被调用之后)才销毁临时对象.可是好像所有的编译器都在函数返回时就销毁了对象.
难道func返回的不是引用,而是引用的引用?
我没找到标准中关于返回引用的定义,谁能帮我找找看..