编写程序声明Point类,在类中声明整型的私有成员变量_x,_y,声明成员函数Point&operator++();Point&operator++(int);以实现对Point类重载“++”运算符,声明成员函数Point&operator–();Point&operator–(int);以实现对Point类重载“–”运算符,实现对坐标值的改变。
时间: 2023-12-21 22:04:07 浏览: 128
对Point类重载++、--运算符实现对坐标值的改变
4星 · 用户满意度95%
好的,这是一个简单的Point类的实现,包括对 "++" 和 "--" 运算符的重载:
```c++
#include<iostream>
using namespace std;
class Point {
private:
int _x;
int _y;
public:
Point() :_x(0), _y(0) {}
Point(int x, int y) :_x(x), _y(y) {}
Point& operator++() {
_x++;
_y++;
return *this;
}
Point operator++(int) {
Point temp(_x, _y);
_x++;
_y++;
return temp;
}
Point& operator--() {
_x--;
_y--;
return *this;
}
Point operator--(int) {
Point temp(_x, _y);
_x--;
_y--;
return temp;
}
friend ostream& operator<<(ostream& os, const Point& p) {
os << "(" << p._x << "," << p._y << ")";
return os;
}
};
int main() {
Point p(1, 2);
cout << p++ << endl; // (1,2)
cout << ++p << endl; // (3,4)
cout << p-- << endl; // (3,4)
cout << --p << endl; // (1,2)
return 0;
}
```
在这个例子中,我们定义了一个Point类,其中包括两个私有成员变量 _x 和 _y,两个构造函数用于初始化对象,以及对 "++" 和 "--" 运算符进行重载。
在前置 "++" 运算符中,我们将 _x 和 _y 分别加 1,并返回更新后的对象。在后置 "++" 运算符中,我们先创建一个临时对象,将其初始化为当前对象的值,然后将当前对象的 _x 和 _y 分别加 1,并返回临时对象。
在前置 "--" 运算符中,我们将 _x 和 _y 分别减 1,并返回更新后的对象。在后置 "--" 运算符中,我们先创建一个临时对象,将其初始化为当前对象的值,然后将当前对象的 _x 和 _y 分别减 1,并返回临时对象。
最后,我们定义了一个友元函数,用于将点的坐标输出到流中,以便我们在主函数中测试我们的类。
阅读全文