【发布时间】:2010-02-07 18:34:29
【问题描述】:
我在玩弄 C++ 和 const 引用,我很困惑为什么这段代码可以工作:
#include <iostream>
class A {
public:
A() : a_(50) {}
const int& getA() const { return a_; }
private:
const int a_;
};
int main(int argc, char* argv[])
{
A* a = new A();
const int& var = a->getA();
std::cout << var << std::endl;
delete a;
std::cout << var << std::endl;
}
结果:
50
50
以下是我的想法:
var 存储对 a_ 的引用。
当a被删除时,a_也应该被删除。
当再次访问 var 时,它不再包含有效的引用,应该会发生分段错误。
为什么会这样?我不相信我会制作临时副本。
【问题讨论】:
标签: c++ constants const-reference