次のサンプルコードを書きました。
#include <iostream>
class B
{
int Value;
public:
B(int V) : Value(V) {}
int GetValue(void) const { return Value;}
};
class A
{
const B& b;
public:
A(const B &ObjectB) : b(ObjectB) {}
int GetValue(void) { return b.GetValue();}
};
B b(5);
A a1(B(5));
A a2(b);
A a3(B(3));
int main(void)
{
std::cout << a1.GetValue() << std::endl;
std::cout << a2.GetValue() << std::endl;
std::cout << a3.GetValue() << std::endl;
return 0;
}
mingw-g++ でコンパイルし、Windows 7 で実行すると、
6829289
5
1875385008
したがって、出力から得られるのは、2 つの匿名オブジェクトがグローバル コンテキストで宣言されていても、初期化が完了すると破棄されるということです。
この私の質問から: クラスに格納されている const 参照が常に有効なオブジェクトを参照することを確認する方法はありますか?