题目:
对类Point重载++(自增)、--(自减)运算符,要求同时重载前缀和后缀的形式。
class Point {
public:
Point(int xx=0, int yy=0) { x = xx; y = yy; }
Point(Point& p);
int getX() { return x; }
int getY() { return y; }
private:
int x, y;
};
解答结果以及示例:
//对类Point重载++(自增)、--(自减)运算符,要求同时重载前缀和后缀的形式。
#include <iostream>
using namespace std;
class Point {
public:
Point(int xx = 0, int yy = 0) {
x = xx;
y = yy;
}
int getX() {
return x;
}
int getY() {
return y;
}
//++前置
Point &operator++() {
Point *t = this;
x++;
y++;
return *t;
}
//后置++
Point operator++(int) {
Point t = *this;
x++;
y++;
return t;
}
//--前置
Point &operator--() {
Point *t = this;
x--;
y--;
return *t;
}
//后置--
Point operator--(int) {
Point t = *this;
x--;
y--;
return t;
}
private:
int x, y;
};
int main() {
Point a1(5, 5);
++a1;
cout << a1.getX() << endl;
cout << a1.getY() << endl;
Point b1(10, 10);
cout << (b1++).getX() << endl;
cout << b1.getY() << endl;
Point c1(5, 5);
--a1;
cout << a1.getX() << endl;
cout << a1.getY() << endl;
Point d1(10, 10);
cout << (b1--).getX() << endl;
cout << b1.getY() << endl;
}