我在玩弄 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 时,它不再包含有效的引用,并且应该发生分段错误。
为什么这行得通?我不相信我会制作临时副本。