爆炸动画连续效果图:有关运算符重载的问题

来源:百度文库 编辑:高校问答 时间:2024/04/28 19:51:12
下面是我写的程序 目的是为了用重载的运算符计算复数的+ -和*
#include <iostream.h>

class Complex
{
public:
int shibu,xubu;
Complex(){}
Complex(int a,int b)
{
shibu=a;
xubu=b;
}

Complex operator+(Complex &p) //实际上是c1.operator+(c2)的模式
{
Complex temp;
temp.shibu=shibu+p.shibu;
temp.xubu=xubu+p.xubu;
return temp;
}

Complex operator-(Complex &p)
{
Complex temp;
temp.shibu=shibu-p.shibu;
temp.xubu=xubu-p.xubu;
return temp;
}

Complex operator*(Complex &p)// (a+bi)*(c+di)=(ac-bd)+(ad+bc)i
{
Complex temp;
temp.shibu=shibu*p.shibu-xubu*p.xubu;
temp.xubu=shibu*p.xubu+xubu*p.shibu;
return temp;
}
};

int main()
{
int a1,b1,a2,b2,no=0,a3=0,b3=0;
Complex num3;
cout<<"Please Input 2 Complex Number."<<endl;
cout<<"num1's real=?"<<endl;
cin>>a1;
cout<<"num1's image=?"<<endl;
cin>>b1;
cout<<"num2's real=?"<<endl;
cin>>a2;
cout<<"num2's image=?"<<endl;
cin>>b2;

Complex num1(a1,b1),num2(a2,b2);

cout<<a1<<" "<<b1<<" "<<a2<<" "<<b2<<endl;
cout<<num1.shibu<<endl;
cout<<num2.xubu<<endl;

cout<<"Now You Can Count"<<endl;
cout<<"1 num1+num2"<<endl;
cout<<"2 num1-num2"<<endl;
cout<<"3 num1*num2"<<endl;
cout<<"Input 1 2 or 3 to view the result"<<endl;
cin>>no;

while(no!=1&&no!=2&&no!=3){
switch(no)
{ case 1:num3=num1+num2;break;
case 2:num3=num1-num2;break;
case 3:num3=num1*num2;break;
default:cout<<"Please Input A correct Number!"<<endl;
cin>>no;
break;
}
}

cout<<"The Result Is "<<num3.shibu<<"+"<<num3.xubu<<"i"<<endl;

/*Complex num1(1,2),num2(3,4);
Complex num3;
num3=num1+num2;
cout<<num3.shibu<<endl;
cout<<num3.xubu<<endl;*/

return 0;
}

运行之后出现的总是错误的结果

但我把main函数里面的语句注释掉 把原来注释的语句取消注释来运行
结果是正确的

不懂为什么会这样。。请各位帮忙 谢谢

我用的是vc++6.0