4-1 复数类的运算符重载

来源:互联网 发布:mysql可以安装在d盘吗 编辑:程序博客网 时间:2024/05/29 07:44

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>#include<bits/stdc++.h>using namespace std;class dix{    private:double s,x;    public:        dix(double a = 0,double b = 0){s = a;x = b;}//构造函数        dix operator + (dix &b);        dix operator - (dix &b);        friend ostream &operator <<(ostream &o,dix a)        {            o<<a.s;            if(a.x > 0)o<<"+"<<a.x<<"i";            else o<<a.x<<"i";            return o;//注意是return o,不是0!!!,必须要有return,否则会runtime error        }};dix dix::operator+(dix &b){    dix c;    c.s = s + b.s;    c.x = x + b.x;    return c;}dix dix::operator-(dix &b){    dix c;    c.s = s - b.s;    c.x = x - b.x;    return c;}int main(){    dix a(3.2,4.5);    dix 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;}
原创粉丝点击