これは、代入演算子とコピー コンストラクター、デストラクタを適切な場合に記述することを求める古い試験問題です。
次のコードがあるとします。
class U { /* code not specified here */ };
class A { /* code not specified here */ private: U& u_; };
答えは次のとおりです。A は U のインスタンスへの C++ 参照を保持します。これはコピーできますが、リセットすることはできません。したがって、次のことを行う必要があります。
• その U を、A ソース インスタンスによって参照される同じインスタンスに初期化するコピー コンストラクターを記述します。
• 代入演算子を非公開にし、実装しない
参照をリセットできないことはわかっています。ただし、クラスに参照メンバー データが含まれている場合は常に代入演算子を使用できないということですか? 次のコードは意味がありますか? 以下のコードは自分で書いたものです(答えではありません)
class U{
public:
int u;
};
class A{
public:
A(U& u):u_(u){}
A& operator=(const A& a){
u_ = a.u_;
return *this;
}
U& u_;
};
int main(){
U u1;
U u2;
A a1(u1);
A a2(u2);
a1 = a2;
a1.u_.u = 1;
a2.u_.u = 2;
cout << "a1.u_.u : " << a1.u_.u << endl;
cout << "a2.u_.u : " << a2.u_.u << endl;
}
前もって感謝します。