私は 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 が再度アクセスされると、有効な参照が含まれなくなり、セグメンテーション違反が発生するはずです。
なぜこれが機能するのですか?一時的なコピーを作成するとは思いません。