// 用成员函数重载 ++ 运算符
// 前缀运算符重载,定义一个不带参数的的重载函数,
// 后缀运算符重载,必须定义一个带有单个参数的重载函数.But why??
#include<iostream>
using namespace std;
class Coordinates // 坐标 类
{
// 前缀运算符重载,定义一个不带参数的的重载函数,
// 后缀运算符重载,必须定义一个带有单个参数的重载函数.But why??
#include<iostream>
using namespace std;
class Coordinates // 坐标 类
{
private:
long x, y;
public:
Coordinates(long xx = 0, long yy = 0)
{x = xx;y = yy;}
void display(){cout << "(" << x << ", " << y << ")" << endl;}Coordinates operator ++(void); //前缀运算符++重载,即++iCoordinates operator ++(int); //后缀运算符++重载,即i++
};
Coordinates Coordinates::operator ++(void)
{
Coordinates Coordinates::operator ++(void)
{
++x;++y;return *this; // ??
}
Coordinates Coordinates::operator ++(int)
{
Coordinates Coordinates::operator ++(int)
{
return Coordinates(x++, y++);
}
void main()
{
void main()
{
Coordinates c1(5, 6), c2;// c2 = c1++cout << "Before c2 = c1++ :" << endl << "c1 = "; c1.display();cout << "c2 = "; c2.display();
c2 = c1++;
cout << "After c2 = c1++ :" << endl << "c1 = "; c1.display();cout << "c2 = "; c2.display();
cout << endl << "***********************" << endl << endl;// c2 = ++c1;cout << "Before c2 = ++c1 :" << endl << "c1 = "; c1.display();cout << "c2 = "; c2.display();
c2 = ++c1;
cout << "After c2 = c1++ :" << endl << "c1 = "; c1.display();cout << "c2 = "; c2.display();
}