4-1 复数类的运算符重载
Time Limit: 1000MS
Memory Limit: 65536KB
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 Point
{
public:
friend Point operator+(Point&a,Point&b);
friend Point operator-(Point&a,Point&b);
void show();
Point(double xx=0,double yy=0);
private:
double x;
double y;
static int c;
};
Point::Point(double xx,double yy)
{
x=xx;
y=yy;
}
void Point::show()
{
c++;
if(c==1)
cout<<"a="<<x<<'+'<<y<<'i'<<endl;
else if(c==2)
cout<<"b="<<x<<'+'<<y<<'i'<<endl;
if(c==3)
cout<<"a+b="<<x<<'+'<<y<<'i'<<endl;
else if(c==4)
cout<<"a-b="<<x<<y<<'i'<<endl;
}
Point operator+(Point &a,Point &b)
{
Point t;
t.x=a.x+b.x;
t.y=a.y+b.y;
return t;
}
Point operator-(Point &a,Point &b)
{
Point t;
t.x=a.x-b.x;
t.y=a.y-b.y;
return t;
}
int Point::c=0;
int main()
{
Point a(3.2,4.5),b(8.9,5.6),c,d;
c=a+b;
d=a-b;
a.show();
b.show();
c.show();
d.show();
return 0;
}
函数类型 operator 运算符名称(形参列表)
{
对运算符的重载处理
}
运算符被重载后,原有功能依然保留,并未丧失或者改变