4-1 复数类的运算符重载
Time Limit: 1000MS
Memory Limit: 65536K
Problem Description
通过本题目的练习可以掌握成员运算符重载及友元运算符重载
要求定义一个复数类,重载加法和减法运算符以适应对复数运算的要求,重载插入运算符(<<)以方便输出一个复数的要求。
Input
要求在主函数中创建对象时初始化对象的值。
Output
输出数据共有4行,分别代表a,b的值和它们求和、求差后的值
Example Input
无
Example Output
a=3.2+4.5i b=8.9+5.6i a+b=12.1+10.1i a-b=-5.7-1.1i
Hint
Author
黄晶晶
#include <iostream>
using namespace std;
class num
{
public:
num(double a,double b)
{
x = a;
y = b;
}
num operator+(const num &n) const;//重载加号
num operator-(const num &n) const;//重载减号
friend ostream &operator<< (ostream &out,const num &n);//重载运算符 友元函数
private:
double x,y;
};
num num::operator+(const num &n) const
{
return num(x+n.x,y+n.y);
}
num num:: operator-(const num &n) const
{
return num(x-n.x,y-n.y);
}
ostream &operator<<(ostream &out,const num &n)
{
if(n.y>0)
cout<<n.x<<'+'<<n.y<<'i';
else if(n.y<0)
cout<<n.x<<n.y<<'i';//输出的时候要注意!!!!!
return out;
}
int main()
{
num a(3.2,4.5);
num b(8.9,5.6);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"a+b="<<a+b<<endl;
cout<<"a-b="<<a-b<<endl;
return 0;
}