1
class A{

    A(B& ref) : b(ref){}
    B getB(){return this->b;}
    B b;
};

getB()はAbへの参照、またはコンストラクターによって指定されたものと同じ参照を返しますか?元のBがAの外部で変更されたが、A.getB()が古いBを返す場合、これは問題になります。場合によっては、それを回避する方法はありますか?

4

2 に答える 2

2

いいえ、 のコピーのみが の対応するインスタンスのメンバーにref格納され、これのコピーが によって返されます。bAgetB

BのインスタンスAが初期化された (やりたいことではなく、ffr)インスタンスを返すには、次のようにします。

class A{

    A(B& ref) : b(ref){}
    B& getB(){return this->b;}
    B& b;
};
于 2012-10-25T19:21:01.710 に答える
2

あなたのゲッターは参照を返しません。参照を返すには、次のように書く必要があります

B &getB(){return this->b;}

また、b も参照ではなく値として格納されます。したがって、同じ参照を返したい場合は、次のようになります。

class A {
  B &b;
public:
  A(B &ref) : b(ref){}
  B &getB(){return this->b;}
};
于 2012-10-25T19:24:00.680 に答える