64,683
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
class Complex {
public:
int re, im;
Complex(int r, int i) :
re(r), im(i) {
}
Complex& operator++();
const Complex operator++(int);
};
Complex& Complex::operator ++()
{
re++; //这里用re++和++re有区别吗?
im++;
return *this;
}
const Complex Complex::operator++(int) //这里用const有什么作用呢,试验发现返回的对象可以改变其值不是不可变的啊-.-
{
Complex oldValue = *this;
++(*this); //这里用++(*this)和(*this)++有区别吗?
return oldValue;
}
int main() {
Complex param1(3, 4);
Complex param2(2, 3);
Complex param3(6, 7);
Complex param4(3, 9);
param1.operator ++();
cout<<"param1:"<<"("<<param1.re<<","<<param1.im<<")"<<endl;
Complex temp=param2.operator++(0);
temp.im+=9;
cout<<"asdlkfj:"<<temp.im<<endl;
cout<<"temp:"<<"("<<temp.re<<","<<temp.im<<")"<<endl;
cout<<"param2:"<<"("<<param2.re<<","<<param2.im<<")"<<endl;
param3++;
cout<<"param3:"<<"("<<param3.re<<","<<param3.im<<")"<<endl;
Complex temp2=param4++;
temp2.im+=9;
cout<<"asdlkfj:"<<temp2.im<<endl;
cout<<"temp2:"<<"("<<temp2.re<<","<<temp2.im<<")"<<endl;
cout<<"param4:"<<"("<<param4.re<<","<<param4.im<<")"<<endl;
return 0;
}
param1:(4,5)
asdlkfj:12
temp:(2,12)
param2:(3,4)
param3:(7,8)
asdlkfj:18
temp2:(3,18)
param4:(4,10)
但是如果第三个改成(*this)++;
运行结果就变成:
param1:(4,5)
其他的值都没有了Complex temp=param2.operator++(0);
temp.im+=9;
3. 没区别