これは、質問を説明するための単純化された例です。
class A {};
class B
{
B(A& a) : a(a) {}
A& a;
};
class C
{
C() : b(a) {}
A a;
B b;
};
したがって、B は C の一部を更新する責任があります。コードを lint で実行したところ、参照メンバーlint#1725についてぐずりました。これは、デフォルトのコピーと割り当てに注意することについて話していますが、これは十分に公平ですが、デフォルトのコピーと割り当てはポインターでも悪いため、そこにはほとんど利点がありません。
ネイキッド ポインターを使用すると、そのポインターを削除する責任が誰にあるのかについて不確実性が生じるため、私は常にできる限り参照を使用するようにしています。私はオブジェクトを値で埋め込むことを好みますが、ポインターが必要な場合は、ポインターを所有するクラスのメンバー データで auto_ptr を使用し、オブジェクトを参照として渡します。
通常、ポインターが null になるか、変更される可能性がある場合にのみ、メンバー データでポインターを使用します。データ メンバーの参照よりもポインターを優先する他の理由はありますか?
一度初期化された参照は変更されるべきではないため、参照を含むオブジェクトは割り当て可能であってはならないというのは本当ですか?