复数类Cpp

#include <iostream>
using namespace std;

class Complex{
private:
	double real;
	double image;
public:
	Complex(const Complex& complex) : real{complex.real}, image{complex.image}{}
	Complex(double re= 0, double im= 0): real{re}, image{im}{}
	~Complex(){}
	
	Complex& operator=(const Complex& c){
		if(this != &c){
			real = c.real;
			image = c.image;
		}
		return *this;
	}
	
	Complex operator+(const Complex c){
		return Complex(this->real + c.real, this.image + c.image);
	}
	
	Complex operator-(const Complex c){
		return Complex(this->real- c.real, this->image - c.image);
	}
	
	Complex operator*(const Complex c){
		double re = this->real * c.real - this->image * c.image;
		double im = this->image * c.real + this->real * c.image;
		return Complex(re, im);//ctor temp
	}
	
	Complex operator/(const Complex c){
		double re = (this->real * c.real + this->image * c.image) / (c.real * c.real + c.image * c.image);
		double im = (this->image * c.real + this->real * c.image) / (c.real * c.real + c.image * c.image);
		return Complex(re, im);
	}
	
	Complex& operator+=(const Complex & c){
		real += c.real;
		image += c.image;
		return *this;
	}
	
	Complex& operator-=(const Complex & c){
		real -= c.real;
		image -= c.image;
		return *this;
	}
	
	Complex& operator*=(const Complex & c){
		Complex temp(*this);//cpctor
		real = temp.real * c.real - image * c.image;
		image = temp.real * c.image + temp.image * c.real;
		return *this;
	}
	
	Complex& operator/=(const Complex & c){
		Complex temp(*this);
		double t = c.real * c.real + c.image * c.image;
		real = (temp.real * c.real + temp.image * c.image) / t;
		image = (temp.image *c.real - temp.real * c.image) / t;
		return *this;
	}
	bool operator==(const Complex& c){
		return real == c.real && image == c.image;
	}
	
	Complex& operator++(){
		real++;
		image++;
		return *this;
	}
	
	Complex operator++(int){
		Complex temp(*this);
		real++;
		image++;
		return temp;
	}
	
	Complex& operator--(){
		real--;
		image--;
		return *this;
	}

	Complex operator(int){
		Complex temp(*this);
		real--;
		image--;
		return temp;
	}

	friend istream &operator>>(istream &in, Complex &c);
	friend ostream &operator<<(ostream &out, const Complex &c);
};
istream &operator>>(istream &in , Complex &c){
	in >> c.real >> c.image;
	return in;
}

ostream &operator<<(ostream &out, const Complex &c){
	out << "(";
	out << c.real << ","
	out << c.image;
	out << "i)";
	return out ;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值