为了账号安全,请及时绑定邮箱和手机立即绑定

后置--运算符重载,返回后数值没有改变

    // 后置--运算符重载

    Coordinate  operator--(int){

       Coordinate *temp = new Coordinate(this->m_iX,this->m_iY);

        temp->m_iX--;

        temp->m_iY--;

       return *temp;

    }

为何我这样操作,返回后,原来的数值不会发生变化呢。而将temp-> 换为this->结果就正确

正在回答

2 回答

我们需要的就是返回一个还没有修改的值,就是temp,和一个已经修改的值this,函数执行完,temp是原来的值,this是新的值。(注意后置--的功能就是使用原来的值,使用后,原来的值-1。如int a,b = 1; a = b--;cout<<a<<","<<b;//输出1,0)。我也不知道解释清楚了没有,再不同意欢迎继续探讨,或加我qq982025911(带上备注)

0 回复 有任何疑惑可以回复我~
#1

qq_剑心_7 提问者

有道理哦,本来就该这样。你也是大莆田的
2018-01-09 回复 有任何疑惑可以回复我~

对,temp确实是新开辟的内存,可返回的也是它。所以原来的值应该发生变化。  

按照您的说法,temp跟this是不同的空间,那么修改this->m_iX 与 this->m_iY,是不会影响到temp的,但是这个函数返回的是temp。 那么返回值也是没有修改的才对。

0 回复 有任何疑惑可以回复我~

temp是你新开辟的内存,操作的是新内存的数据,和this的xy相等,但是不是同一个xy,所以没有改变。你可以试试输出temp和this,发现他们不一样,也可以区别&(this->m_iX)和&(temp->m_iX),这两个地址也不一样。对了,正确改法应该是:第三和第四行的temp改成this。

0 回复 有任何疑惑可以回复我~
#1

qq_剑心_7 提问者

对,temp确实是新开辟的内存,可返回的也是它。所以原来的值应该发生变化。 按照您的说法,temp跟this是不同的空间,那么修改this->m_iX 与 this->m_iY,是不会影响到temp的,但是这个函数返回的是temp。 那么返回值也是没有修改的才对。
2018-01-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之模板篇
  • 参与学习       91156    人
  • 解答问题       318    个

本C++教程力求即学即会,所有知识以实践方式讲解到操作层面

进入课程

后置--运算符重载,返回后数值没有改变

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信