class A{
A(B& ref) : b(ref){}
B getB(){return this->b;}
B b;
};
getB()はAbへの参照、またはコンストラクターによって指定されたものと同じ参照を返しますか?元のBがAの外部で変更されたが、A.getB()が古いBを返す場合、これは問題になります。場合によっては、それを回避する方法はありますか?
いいえ、 のコピーのみが の対応するインスタンスのメンバーにref
格納され、これのコピーが によって返されます。b
A
getB
B
のインスタンスA
が初期化された (やりたいことではなく、ffr)のインスタンスを返すには、次のようにします。
class A{
A(B& ref) : b(ref){}
B& getB(){return this->b;}
B& b;
};
あなたのゲッターは参照を返しません。参照を返すには、次のように書く必要があります
B &getB(){return this->b;}
また、b も参照ではなく値として格納されます。したがって、同じ参照を返したい場合は、次のようになります。
class A {
B &b;
public:
A(B &ref) : b(ref){}
B &getB(){return this->b;}
};