自增分为前增和后增。C++ 并不要求两者一定是类的成员函数,也可以是友元,但是更倾向于使用成员函数
先说一下两者的重载区别。
class Size{
private:
int size;
}
一、前增
Size& Size::operator+(){ this->size++; return *this; }
二、后增
Size Size::operator(int){ Size tmps(*this); this->size++; return tmps; }
对于前者返回值就是自己的当前,所以返回引用是没有问题的;后者返回值得原因是,返回的是局部变量,返回引用是很危险的,因为局部变量有可能会被重写。
所以下面的自增方式是不正确的
int a=12; (a++)++;//error
由于后增返回一个原先对象的拷贝,不再是变量而是常量,因此上面的赋值会报错
参考:
[1] http://www.cnblogs.com/chenyuming507950417/archive/2012/04/19/2456966.html