当前位置:首页 » 《随便一记》 » 正文

实验十二 运算符重载

15 人参与  2022年11月15日 12:57  分类 : 《随便一记》  评论

点击全文阅读


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再输出}


 


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/48506.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1