声明point类,有坐标x,y两个成员变量,对point类重载“++”,“--”运算符,实现对坐标值的改变
时间: 2024-09-12 14:15:13 浏览: 135
在C++中,声明一个`Point`类并重载`++`和`--`运算符来改变坐标值的示例代码如下:
```cpp
class Point {
public:
int x, y;
Point(int xVal = 0, int yVal = 0) : x(xVal), y(yVal) {}
// 前置++
Point& operator++() {
++x;
++y;
return *this;
}
// 后置++,注意要有一个int参数,但不使用它
Point operator++(int) {
Point tmp = *this; // 创建原始值的副本
++x;
++y;
return tmp; // 返回副本
}
// 前置--
Point& operator--() {
--x;
--y;
return *this;
}
// 后置--
Point operator--(int) {
Point tmp = *this; // 创建原始值的副本
--x;
--y;
return tmp; // 返回副本
}
};
```
在这个类定义中,我们首先定义了两个成员变量`x`和`y`,它们分别存储点的横纵坐标值。构造函数允许创建`Point`对象时初始化这些坐标值,默认为`0`。
然后,我们为`Point`类重载了四种形式的`++`和`--`运算符:
1. 前置`++`运算符(`++Point`)通过引用返回当前对象,并将`x`和`y`的值各自增加`1`。
2. 后置`++`运算符(`Point++`)创建当前对象的一个副本,然后将`x`和`y`的值各自增加`1`,最后返回这个副本。
3. 前置`--`运算符(`--Point`)通过引用返回当前对象,并将`x`和`y`的值各自减少`1`。
4. 后置`--`运算符(`Point--`)创建当前对象的一个副本,然后将`x`和`y`的值各自减少`1`,最后返回这个副本。
注意,后置运算符中使用的无名整数参数是为了区分前缀和后缀形式。
使用这个类的实例可以像这样使用自增和自减运算符:
```cpp
int main() {
Point p(3, 4);
++p; // 调用前置++,坐标变为(4, 5)
Point p2 = p--; // 调用后置++,得到副本(4, 5),然后坐标变为(5, 6)
Point p3 = ++p; // 调用前置++,坐标变为(6, 7),p3是副本(6, 7)
--p; // 调用前置--,坐标变为(5, 6)
Point p4 = p--; // 调用后置--,得到副本(5, 6),然后坐标变为(4, 5)
// 输出坐标值来验证结果
std::cout << "p: (" << p.x << ", " << p.y << ")" << std::endl;
std::cout << "p2: (" << p2.x << ", " << p2.y << ")" << std::endl;
std::cout << "p3: (" << p3.x << ", " << p3.y << ")" << std::endl;
std::cout << "p4: (" << p4.x << ", " << p4.y << ")" << std::endl;
return 0;
}
```
阅读全文