课程
/后端开发
/C++
/C++远征之模板篇
// 后置--运算符重载
Coordinate& operator--(int)
{
Coordinate *old = this;
m_iX--;
m_iY--;
return *old;
}
2018-10-17
源自:C++远征之模板篇 4-7
正在回答
this赋值给old这里是浅拷贝,没有申请新的内存,所以实际变动的就是coor2内存的值,返回的指针也是指向coor2的。
old其实就是一个临时变量,用来存this的
Coordinate operator--(int)
m_iX--;//this->m_iX--
m_iY--;//this->m_iY--,改变原对象的数据成员的值,
Coordinate c1(*this);//this指针指向的 是原对象,赋值给新的对象c1,然后返回-1(--)过后的对象的值。
return c2;
我的理解是,c++引用可以理解为一种隐形指针,&old中的old可能已经被销毁了,但是old所在的那段内存还没有被使用,所以当引用(指针)访问old所在的地址的时候,如果这个地址还没有被使用,里面的值还是old原来的值,就可以获得正确的值。但是这样并不保险,所以建议不要返回局部变量的引用。
举报
本C++教程力求即学即会,所有知识以实践方式讲解到操作层面