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存储在b的相应实例的成员中A,而 this 的副本是由 . 返回的getB

要返回该实例的初始化实例(B不是想要做的,而是ffr),您可以这样做:A

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 回答