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++;
自己试着写一下,不明白再问。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)