递增和递减运算符
定义递增和递减运算符的准则:
①定义递增和递减运算符的类应该同时定义前置和后置版本。
②递增和递减运算符应该被定义成成员函数
③前置运算符应该返回递增或递减后对象的引用,后置运算符应该返回对象的原值(递增或递减前的值)而非引用。
④区分前置和后置运算符:
- 前置版本与正常的运算符重载形式类似。
- 后置版本参数列表接受不被使用的int类型形参,这个形参唯一的作用就是区分前置和后置类型版本。
例如:开发一批苹果手机,每个有一个编号,每个手机除了编号外其余所有参数一致。可以为其定义递增或递减运算符改变编号。
class Phone {
public:
Phone():_num(0), _price(6000){}
Phone& operator++() {
++_num;
return *this;
}
Phone operator++(int) {
Phone ret = *this;
++_num;
return ret;
}
int getNum() {
return _num;
}
private:
int _num; //编号
double _price; //售价
};
int main() {
Phone p1;
++p1;
cout << p1.getNum() << endl;
cout << (p1++).getNum() << endl;
cout << p1.getNum() << endl;
}
//输出结果为:
1
2
2