は、参照型としてメンバを持つクラス定義される第2オブジェクトの作成後に変更された理由:最初のオブジェクト部材は
int value1 = 1, value2 = 2;
NodeBase first(value1);
NodeBase second(value2);
:このクラスタイプの2つのオブジェクトを作成しそして
struct NodeBase{
int& val;
NodeBase(int input = 0) :val{ input }{}
};
をfirst
が作成され、そのメンバーのval
は1と等しくなりました。ただし、second
を作成した後、val
の値はfirst
に変更されました。
:
はこれを試してみてください。したがって、参照を評価するための未定義の動作です。 –
定義済みの変数に変更され、問題は同じです。 – lightrek
重要ではありませんが、参照はコンストラクタの最後で終了するfunctionパラメータにバインドされます。 –