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

后置——重载我返回引用也可以?old不是临时变量码?

 // 后置--运算符重载

    Coordinate& operator--(int)

    {

        Coordinate *old = this;

        m_iX--;

    m_iY--;

    return *old;

        

    }


正在回答

4 回答

this赋值给old这里是浅拷贝,没有申请新的内存,所以实际变动的就是coor2内存的值,返回的指针也是指向coor2的。

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

old其实就是一个临时变量,用来存this的

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

Coordinate operator--(int)

{

m_iX--;//this->m_iX--

m_iY--;//this->m_iY--,改变原对象的数据成员的值,

Coordinate c1(*this);//this指针指向的 是原对象,赋值给新的对象c1,然后返回-1(--)过后的对象的值。

return c2;

}



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

我的理解是,c++引用可以理解为一种隐形指针,&old中的old可能已经被销毁了,但是old所在的那段内存还没有被使用,所以当引用(指针)访问old所在的地址的时候,如果这个地址还没有被使用,里面的值还是old原来的值,就可以获得正确的值。但是这样并不保险,所以建议不要返回局部变量的引用。

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

举报

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

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

进入课程

后置——重载我返回引用也可以?old不是临时变量码?

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