【问题描述】设计一个名为Point的类,表示平面坐标下的一个点,这个类包括:两个int 型数据成员:_x, _y,分别表示横坐标和纵坐标,声明成员函数Point& operator++();Point operator++(int); 以实现Point类重载“++”(自增)运算符,声明成员函数Point& operator–();Point operator–(int); 以实现Point类重载“–”(自减)运算符。其他成员函数自定。并编写主程序进行测试。键盘输入一个坐标点,输出后置和前置“++”运算后的坐标点以及后置和前置“–”运算后的坐标点。
【输入形式】任意一个坐标点。
【输出形式】输出后置和前置“++”运算后的坐标点以及后置和前置“–”运算后的坐标点。
【样例输入】
1 2
【样例输出】
(1, 2)
(1, 2)
(3, 4)
(3, 4)
(1, 2)
代码如下:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<istream>
#include<iomanip>
#include<ostream>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<fstream>
#include<stack>
#include<ctime>
#include<deque>
#include<queue>
#include <sstream>
#include <numeric>
#pragma warning (disable:4996)
using namespace std;
class Point {
public:
Point(int x = 0, int y = 0);
Point& operator++(); // 前置++
Point operator++(int); // 后置++
Point& operator--(); // 前置--
Point operator--(int); // 后置--
void display();
private:
int _x, _y;
};
Point::Point(int x, int y) {
_x = x;
_y = y;
}
// 前置++
Point& Point::operator++() {
_x++;
_y++;
return *this;
}
// 后置++
Point Point::operator++(int) {
Point old = *this;
++(*this);
return old;
}
// 前置--
Point& Point::operator--() {
_x--;
_y--;
return *this;
}
// 后置--
Point Point::operator--(int) {
Point old = *this;
--(*this);
return old;
}
void Point::display() {
cout << "(" << _x << ", " << _y << ")" << endl;
}
int main() {
int x, y;
cin >> x >> y;
Point p(x, y);
p.display();
p++.display();
(++p).display();
p--.display();
(--p).display();
}