我有一个函数A(),该函数返回一个指向对象的指针。在函数B()中,我尝试通过以下方式更改该对象的成员:
void B()
{
ObjType o = *getObj();
o.set("abc");
}
对象o被存储在一个数组中,当我打印该成员的值时,似乎什么也没发生,并且该成员仍然具有旧值;
解决方案非常简单:
void B()
{
ObjType * o = getObj();
o->set("abc");
}
这确实有效。但是对我来说,这与第一个示例完全相同。谁能解释一下?
最佳答案
以下行最有可能复制对象:
ObjType o = *getObj();
这就是为什么什么也没发生。如果您不想使用第二个片段中所示的指针,则可以使用如下引用:
ObjType& o = *getObj();
o.set("abc");