复数类的实现

#ifndef __EXAMPLE__
#define __EXAMPLE__
#include<iostream>
using namespace std;
class Complex{
public:
        Complex(double i=0,double j=0):data1(i),data2(j){}
        Complex(const Complex& c):data1(c.data1),data2(c.data2){}
        Complex& operator=(const Complex& c);
        ~Complex(){}
        friend ostream& operator<<(ostream& out,const Complex& c);
        friend istream& operator>>(istream& in,Complex& c);
        friend Complex operator+(const Complex&c1,const Complex&c2);
        Complex& operator+=(const Complex& c);
        bool operator==(const Complex& c);
        bool operator!=(const Complex& c);
private:
        double data1;
        double data2;
};

bool Complex::operator==(const Complex& c)
{
         return ((data1==c.data1)&&(data2==c.data2));
}
bool Complex::operator!=(const Complex& c)
{
        return !(*this==c);
}

Complex& Complex::operator+=(const Complex& c)
{
        data1=data1+c.data1;
        data2=data2+c.data2;
        return *this;
}
Complex operator+(const Complex&c1,const Complex&c2)
{
        Complex c(c1);
        c+=c2;
        return c;
}

istream& operator>>(istream& in,Complex& c)
{
        in>>c.data1>>c.data2;
        if(!in)
                c=Complex();
        return in;
}
ostream& operator<<(ostream& out,const Complex& c)
{
        if(c.data2>=0)
                out<<c.data1<<"+"<<c.data2<<"i";
        else
                out<<c.data1<<c.data2<<"i";
        return out;
}

Complex& Complex::operator=(const Complex& c)
{
        data1=c.data1;
        data2=c.data2;
        return *this;
}
#endif
                                                                               



#include"complex_data.h"
#include<iostream>
using namespace std;

int main(){
        Complex c1;
        Complex c2;
        Complex c3=Complex(1,1);
        Complex *c4=new Complex(2,2);
        c2=*c4;
        Complex c5(c3);
        cin>>c1;
        cout<<c1<<endl;
        cout<<c2<<endl;
        cout<<c3<<endl;
        cout<<*c4<<endl;
        cout<<c5<<endl;
        c1+=c2;
        cout<<"c1=+c2:"<<c1<<endl;
        c2=c1+c3;
        cout<<"c2=c1+c3:"<<c2<<endl;
        cout<<"c1==c2?"<<(c1==c2)<<endl;
        cout<<"c3==c5?"<<(c3==c5)<<endl;
        return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值