您的位置:首页 > 编程语言 > C语言/C++

C++复数类的运算符重载

2017-12-27 00:07 155 查看

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


重载了“+”,“-”运算符以及输出运算符:“<<"

Code

#include <bits/stdc++.h>
using namespace std;
class Complex
{
private:
double real, image;
public:
Complex(double x=0, double y=0)
{
real = x;
image = y;
}
Complex operator+(Complex &c2);
Complex operator-(Complex &c3);
friend ostream &operator<<(ostream &out, Complex &p); //重载输出运算符的非成员函数因为需要调用私有成员,故声明为类的友元函数,
};
ostream &operator << (ostream &output, Complex &c) //“<<"操作符的左侧为ostream类型的引用,右操作数是Complex类型的引用这样在执行"cout << c"的时候//,就会调用 operator << (cout, c);
{
output << "(" << c.real << "," << c.image << ")";
return output; //须注意这里的返回值为output,这是为了支持像"cout << c1 << c2"这样的连续输出的情况,第二个<<左操作数是第一个<<的返回值。
}
Complex Complex::operator+(Complex &c2)
{
Complex c1;
c1.real = real+c2.real;
c1.image = image+c2.image;
return c1;
}
Complex Complex::operator-(Complex &c3)
{
Complex c1;
c1.real = real-c3.real;
c1.image = image-c3.image;
return c1;
}

int main()
{
Complex a(3.2, 4.5), b(8.9, 5.6), c, d;
c = a + b;
d = a - b;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "a+b=" << c << endl;
cout << "a-b=" << d << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: