#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 ;
}
复数类Cpp
最新推荐文章于 2023-11-09 21:13:38 发布