++运算符的重载
- ++运算符是单目运算符,这里我们重载为成员函数,所以不需要传入参数。++分为前置++和后置++,为了区分前置和后置,在后置中加一个int类型的参数。(C++规定后置的操作符重载接受一个int作为参数,以便与前置++区分,具体调用哪一个时由编译系统决定)
- 下面是++运算符重载的实例,- -类似,略。
- 这里我们用到了this指针来操作对象。
#include <iostream>
using namespace std;
//特殊运算符的重载(++运算符)
class Point{
private:
int x,y;
public:
Point(int x1=0,int y1=0):x(x1),y(y1){ }
//重载前缀运算符
Point operator ++() //单目运算符,若重载为成员函数则不需要形参
{
x++;
y++;
return *this; //这里用到了this指针来返回前缀++后的对象
}
//重载后缀运算符
Point operator ++(int) //加一个int形参数。不需要使用它,仅为了与前缀区分
{
//这里我们需要保存原来的对象后再++
Point old=*this;
x++;
y++;
return old;
}
void print()
{
cout<<"("<<x<<","<<y<<")"<<endl;
}
};
int main()
{
Point one(1,2),two;
one.print(); //(1,2)
two=one++;
two.print(); //(1,2)
one.print(); //(2,3)
Point three(5,6),four;
three.print();//(5,6)
four=++three;
four.print(); //(6,7)
three.print();//(6,7)
return 0;
}
运行结果: