我有一个函数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");