资源描述
【例4.8】定义复数Complex类,使用友元函数,完成复数的加法、减法、乘法运算,以及对复数的输出。
#include<iostream.h>
class Complex
{
double real;
double image;
public:
Complex(double r=0,double i=0)
{
real=r; image=i;
}
friend void inputcomplex(Complex &comp);
friend Complex addcomplex(Complex c1,Complex c2);
friend Complex subcomplex(Complex c1,Complex c2);
friend Complex mulcomplex(Complex c1,Complex c2);
friend void outputcomplex(Complex comp);
};
void inputcomplex(Complex &comp)
{
cin>>comp.real>>comp.image;
}
Complex addcomplex(Complex c1,Complex c2)
{
Complex c;
c.real=c1.real+c2.real;
c.image=c1.image+c2.image;
return c;
}
Complex subcomplex(Complex c1,Complex c2)
{
Complex c;
c.real=c1.real-c2.real;
c.image=c1.image-c2.image;
return c;
}
Complex mulcomplex(Complex c1,Complex c2)
{
Complex c;
c.real=c1.real*c2.real-c1.image*c2.image;
c.image=c1.real*c2.image+c1.image*c2.real;
return c;
}
void outputcomplex(Complex comp)
{
cout<<"("<<comp.real<<","<<comp.image<<")";
}
void main()
{
Complex c1,c2,result;
cout<<"请输入第一个复数的实部和虚部:"<<endl;
inputcomplex(c1);
cout<<"请输入第二个复数的实部和虚部:"<<endl;
inputcomplex(c2);
result=addcomplex(c1,c2);
outputcomplex(c1);
cout<<"+";
outputcomplex(c2);
cout<<"=";
outputcomplex(result);
cout<<"\n-------------------------"<<endl;
result=subcomplex(c1,c2);
outputcomplex(c1);
cout<<"-";
outputcomplex(c2);
cout<<"=";
outputcomplex(result);
cout<<"\n-------------------------"<<endl;
result=mulcomplex(c1,c2);
outputcomplex(c1);
cout<<"*";
outputcomplex(c2);
cout<<"=";
outputcomplex(result);
cout<<endl;
}
程序的运行结果为:
请输入第一个复数的实部和虚部:
1 2
请输入第二个复数的实部和虚部:
3 4
(1,2)+(3,4)=(4,6)
-------------------------
(1,2)-(3,4)=(-2,-2)
-------------------------
(1,2)*(3,4)=(-5,10)
说明:
此例中,我们通过友元函数实现了复数的加法、减法、乘法运算,以及复数的输入和输出,复数的除法运算读者可以自己实现。当然,我们可以考虑能不能用简单的+、-、*、/运算符来实现复数的四则运算,这是我们在第6章要讲到的运算符重载。
展开阅读全文