代码如下:
#include<iostream>
using namespace std;
class Point
{
public:
Point(){}
Point(int xx,int yy):x(xx),y(yy){}
Point operator ++();
Point operator ++(int); //后置是int型的变量,而非写数字0
Point operator --();
Point operator --(int);
void display(){cout<<"("<<x<<","<<y<<")"<<endl;}
private:
int x;
int y;
};
类内重载运算符函数的实现:(出错)
Point operator ++()
{
return Point(x++,y++);
}
Point operator ++(int)
{
return Point(++x,++y);
}
Point operator --()
{
return Point(x--,y--);
}
Point operator ++(int)
{
return Point(--x,--y);
}
主函数:
int main()
{
Point p1(1,2);
p1++;
cout<<"p1++";p1.display();
return 0;
}
结果错误如下:
它必须具有类或枚举类型的参数。
原因为:在类外实现时的格式不对。
改为:
#include<iostream>
using namespace std;
class Point
{
public:
Point(){}
Point(int xx,int yy):x(xx),y(yy){}
Point operator ++();
Point operator ++(int); //后置是int型的变量,而非写数字0
Point operator --();
Point operator --(int);
void display(){cout<<"("<<x<<","<<y<<")"<<endl;}
private:
int x;
int y;
};
Point Point::operator ++()
{
return Point(++x,++y);
}
Point Point::operator ++(int)
{
return Point(x++,y++);
}
Point Point::operator --()
{
return Point(--x,--y);
}
Point Point::operator --(int)
{
return Point(x--,y--);
}
int main()
{
Point p1(1,2);
++p1;
cout<<"++p1=";p1.display();
p1++;
cout<<"p1++=";p1.display();
--p1;
cout<<"--p1=";p1.display();
p1--;
cout<<"p1--=";p1.display();
return 0;
}
运行结果: