运算符重载(C++)(自增++和加法+) 补充成员函数及构造函数

运算符重载(C++)(自增++和加法+) 补充成员函数及构造函数,第1张

complex::complex(double rt=0, double it=0)

{

r=rt;

i=it;

}

complex complex::operator+(complex &a)

{

complex b;

br=this->r+ar;

bi=this->i+ai;

return b;

}

complex complex::operator++()

{

this->r+=1;

return this;

}

complex complex::operator++(int n)

{

complex old(this->r, this->i);

++(this);

return old;

}

自增是否就是实部加1

set和get不知道要求

结果跟预期不一样主要跟编译器编译策略有关:你所用的编译器在编译时应该是从右向左的。

cout<<"("<<(p1++)getx()<<","<<(p1++)gety()<<")"<<endl;

运行时先执行(p1++)gety(),此时先执行p1gety(),得到的p1::y的值为1,然后执行p1++,之后p1::x的值为2,p1::y的值为2;之后执行(p1++)getx(),此时先执行p1getx(),得到的p1::x的值为2,然后执行p1++,之后p1::x的值为3,p1::y的值为3;所以输出结果为(2,1)

cout<<"("<<(++p1)getx()<<","<<(++p1)gety()<<")"<<endl;

运行时先执行(++p1)gety(),此时先执行p1++,之后p1::x的值为4,p1::y的值为4,然后执行p1gety(),得到的p1::y的值为4;之后执行(p1++)getx(),此时先执行p1++,之后p1::x的值为5,p1::y的值为5,然后执行p1getx(),得到的p1::x的值5;所以输出结果为(5,4)

在编写代码是不能想当然的认为代码的执行顺序,因为编译器往往会有自己的策略,以优化程序的效率。

后增一般是先用个临时变量拷贝一份 this,在本身自增1后 return这个临时变量就好了吧。

一般前置++返回的是Time&,后置的好像直接返回Time就好,没有引用。

this是个指针,指向对象本身,所有可以实例化的类都有这个。

我写错了,应该是用->来访问的。

this->x++;

自己试着写一下,不明白再问。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/meirong/8914729.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-09-30
下一篇2023-09-30

发表评论

登录后才能评论

评论列表(0条)

    保存