次のコードがありますが、なぜゴミではなく「22」と書き出すのか疑問に思っています
class example
{
public:
example(int ea) : ref(ea)
{
}
int& ref;
};
int main ()
{
example obj(22);
cout << obj.ref; // Writes out 22
return 0;
}
私はこれが起こるべきだと思います:
- obj(22) は、22 を一時的な整数に暗黙的に変換します。
- 整数は int ea パラメータにコピーされます
- ref は ea パラメータへの参照で初期化されます
- ea パラメータが破棄されます
なぜ参照がまだ有効なのですか?