此getter是否返回构造函数给出的引用或对类中对象的引用? C ++

时间:2012-10-25 19:19:30

标签: c++ reference

class A{

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

getB()是否返回对A.b的引用或构造函数给出的相同引用?如果原始B已在A之外更改但是A.getB()仍然返回旧B,则会出现问题。 如果是这种情况,有没有办法避免这种情况?

2 个答案:

答案 0 :(得分:2)

不,只有ref的副本存储在b的相应实例的A成员中,其副本是getB返回的内容。

要返回B的实例,A的实例已初始化为(不是你想做什么,但是ffr),你会这样做:< / p>

class A{

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

答案 1 :(得分:2)

您的getter不会返回引用。要返回引用,您必须编写

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

此外,b也存储为不参考的值。因此,如果您想返回相同的参考,它应该如下所示:

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