A.三维坐标点的平移(递增++ 递增--的重载)
题目描述
定义一个三维点Point类,利用友元函数重载"++“和”–-"运算符,并区分这两种运算符的前置和后置运算。
要求如下:
1.实现Point类;
2.编写main函数,初始化1个Point对象,将这个对象++或–后赋给另外一个对象,并输出计算后对象的坐标信息。
输入
第1行:输入三个int类型的值,分别为一个Point对象p1的x,y,z坐标。
输出
原值是最初输入的数值
第1行是p1后置++后,再输出
第2行是p1恢复原值,接着p1后置++同时复制给p2,p2输出
第3、4行是p1恢复原值,p1前置++同时输出,然后p1再输出
第5、6行是p1恢复原值,p1后置–后,再输出,接着输出一次原值
第7、8行是p1恢复原值,p1前置–同时输出,然后p1再输出
输入样例
10 20 30
输出样例
x=11 y=21 z=31
x=10 y=20 z=30
x=11 y=21 z=31
x=11 y=21 z=31
x=9 y=19 z=29
x=10 y=20 z=30
x=9 y=19 z=29
x=9 y=19 z=29
#include<iostream>using namespace std;class point{ int x,y,z;public: point(int xx = 0, int yy = 0, int zz = 0) { x = xx; y = yy; z = zz; } friend point operator ++(point&p); friend point operator ++(point&p, int); friend point operator --(point&p); friend point operator --(point&p, int); void show()const { cout << "x=" << x << " y=" << y << " z=" << z << endl; }};point operator ++(point& p)//对于前增量,我们直接让它++或--完了之后返回就可以了。{ p.x++; p.y++; p.z++; return p;}point operator ++(point& p, int)//对于后增量,我们应该要创建一个临时变量先存储现值,然后做++或--,返回临时变量的值。{ //int 占位区分 point temp=p; p.x++; p.y++; p.z++; return temp;}point operator --(point& p){ p.x--; p.y--; p.z--; return p;}point operator --(point& p, int){ point temp=p; p.x--; p.y--; p.z--; return temp;}int main(){ int x, y, z; cin >> x >> y >> z; point p1(x, y, z); point p2; point p3 = p1;//p1原值 类对象之间的赋值也可以通过赋值运算符“=”进行。 p1++; p1.show();//p1后置++后,再输出 p1 = p3; //p1恢复原值 p2 = p1++;//p1后置++同时复值给p2 p2.show();//p2输出 p1 = p3; //p1恢复原值 (++p1).show();//p1前置++同时输出 p1.show(); //然后p1再输出 p1 = p3;//p1恢复原值 p1--; p1.show(); //p1后置–-后,再输出 p1 = p3; p1.show();// 接着输出一次原值 p1 = p3; //p1恢复原值 (--p1).show();//p1前置–同时输出 p1.show();//然后p1再输出}