4-1 复数类的运算符重载
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
通过本题目的练习可以掌握成员运算符重载及友元运算符重载
要求定义一个复数类,重载加法和减法运算符以适应对复数运算的要求,重载插入运算符(<<)以方便输出一个复数的要求。
输入
要求在主函数中创建对象时初始化对象的值。
输出
输出数据共有4行,分别代表a,b的值和它们求和、求差后的值
示例输入
无
示例输出
a=3.2+4.5i b=8.9+5.6i a+b=12.1+10.1i a-b=-5.7-1.1i
#include <iostream>
using namespace std;
class complex
{
private:
double real;
double image;
public:
complex(double r=0,double i=0)//有默认参数的构造函数
{
real=r;
image=i;
}
complex operator+(complex a)//成员函数的运算符重载
{
complex c;
c.real=real+a.real;
c.image=image+a.image;
return c;
}
friend complex operator - (complex a,complex b);//友元函数的运算符重载
void display(string str)
{
cout<<str<<"="<<real;
if(image>0)
cout<<"+"<<image<<"i"<<endl;
else
cout<<image<<"i"<<endl;
}
};
complex operator-(complex a,complex b)
{
complex c;
c.real=a.real-b.real;
c.image=a.image-b.image;
return c;
}
int main()
{
complex c1(3.2,4.5),c2(8.9,5.6),c3;
c1.display("a");
c2.display("b");
c3=c1+c2;
c3.display("a+b");
c3=c1-c2;
c3.display("a-b");
return 0;
}
#include <iostream>
using namespace std;
class complex
{
private:
double real;
double image;
public:
complex(double r=0,double i=0)//有默认参数的构造函数
{
real=r;
image=i;
}
complex operator+(complex a)//成员函数的运算符重载
{
complex c;
c.real=real+a.real;
c.image=image+a.image;
return c;
}
friend complex operator - (complex a,complex b);//友元函数的运算符重载
void display(string str)
{
cout<<str<<"="<<real;
if(image>0)
cout<<"+"<<image<<"i"<<endl;
else
cout<<image<<"i"<<endl;
}
};
complex operator-(complex a,complex b)
{
complex c;
c.real=a.real-b.real;
c.image=a.image-b.image;
return c;
}
int main()
{
complex c1(3.2,4.5),c2(8.9,5.6),c3;
c1.display("a");
c2.display("b");
c3=c1+c2;
c3.display("a+b");
c3=c1-c2;
c3.display("a-b");
return 0;
}