class A{
A(B& ref) : b(ref){}
B getB(){return this->b;}
B b;
};
getB()是否返回对A.b的引用或构造函数给出的相同引用?如果原始B已在A之外更改但是A.getB()仍然返回旧B,则会出现问题。 如果是这种情况,有没有办法避免这种情况?
答案 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;}
};