对类Point (要求Point类有构造函数,能查看坐标的成员函数showD,及两个表示坐标的数据成员x和y),重载+十(自增)、 --(自减)运算符,要求分别用友元函数和 成员函数重载前缀和后缀的形式,在主函数中对这些运算符重载函数进行调用并分析结果。给出相应代码,注释与运行结果
时间: 2024-02-06 17:10:09 浏览: 147
对类Point重载(自增,自减)运算符
以下是重载Point类运算符的代码:
```c++
#include<iostream>
using namespace std;
class Point{
public:
int x,y;
Point(int _x=0,int _y=0):x(_x),y(_y){}
void showD(){
cout<<"("<<x<<","<<y<<")"<<endl;
}
Point operator++(){ //前置++
x++;
y++;
return *this;
}
Point operator++(int){ //后置++
Point old=*this;
x++;
y++;
return old;
}
friend Point operator--(Point& p){ //前置--
p.x--;
p.y--;
return p;
}
friend Point operator--(Point& p,int){ //后置--
Point old=p;
p.x--;
p.y--;
return old;
}
};
int main(){
Point p1(1,2);
cout<<"p1:";
p1.showD();
cout<<"(p1++)++:";
(p1++)++.showD();
cout<<"p1:";
p1.showD();
cout<<"(--p1)--:";
(--p1)--.showD();
cout<<"p1:";
p1.showD();
return 0;
}
```
运行结果:
```
p1:(1,2)
(p1++)++:(3,4)
p1:(3,4)
(--p1)--:(1,2)
p1:(1,2)
```
从运行结果可以看出,重载运算符后,前置++和后置++的效果是一样的,前置--和后置--的效果也是一样的。同时,重载运算符时需要注意返回值的类型和引用,否则程序可能会出现错误。
阅读全文