当前位置:  开发笔记 > 编程语言 > 正文

解除引用操作符和函数的问题

如何解决《解除引用操作符和函数的问题》经验,为你挑选了1个好方法。

我有一个函数A(),它返回一个指向对象的指针.在函数B()中,我尝试以下列方式更改该对象的成员:

void B()
{
    ObjType o = *getObj();
    o.set("abc");
}

对象o存储在一个数组中,当我打印成员的值时,似乎什么都没发生,并且该成员仍然具有旧值;

解决方案非常简单:

void B()
{
    ObjType * o = getObj();
    o->set("abc");
}

这确实有效.但对我来说,这与第一个样本完全相同.有谁能解释一下?



1> gix..:

以下行最有可能复制对象:

ObjType o = *getObj();

这就是为什么没有发生的原因.如果您不想使用第二个代码段中所示的指针,则可以使用如下引用:

ObjType& o = *getObj();
o.set("abc");

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有