//复数类
#include<iostream>
using namespace std;
#pragma once
class Complex
{
public:
void Display()
{
cout<<"real:"<<_real<<endl;
cout<<"image:"<<_image<<endl;
}
// 带缺省值的构造函数
Complex (double real = 0, double image = 0)
{
cout<<"带缺省值的构造函数"<<endl;
_real = real;
_image = image;
}
// 析构函数
~Complex()
{
cout<<"~Complex()"<<endl;
}
// 拷贝构造函数
Complex (const Complex& d)
{
cout<<"拷贝构造函数"<<endl;
this->_real =d._real;
this->_image = d._image;
}
// 赋值运算符重载
Complex& operator= (const Complex& d)
{
cout<<"赋值运算符的重载"<<endl;
if(this != &d)
{
this->_real = d._real;
this->_image = d._image;
}
return *this;
}
void Display(double _real,double _image)
{
cout<<this->_real<<"-"<<this->_image<<endl;
}
public:
Complex& operator++()
{
cout<<"前置++"<<endl;
++_real;
return *this;
}
Complex operator++(int)
{
cout<<"后置++"<<endl;
Complex tmp(*this);
++_real;
return tmp;
}
Complex& operator--()
{
cout<<"前置--"<<endl;
--_real;
return *this;
}
Complex operator--(int) //后置--
{
cout<<"后置--"<<endl;
Complex tmp(*this);
--_real;
return tmp;
}
Complex operator+(const Complex& c)
{
Complex tmp;
tmp._real = _real + c._real;
tmp._image = _image + c._image;
return tmp;
}
Complex operator-(const Complex& c)
{
Complex tmp;
tmp._real = _real - c._real;
tmp._image = _image - c._image;
return tmp;
}
Complex& operator-=(const Complex& c)
{
_real = _real - c._real;
_image = _image - c._image;
}
Complex& operator+=(const Complex& c)
{
_real = _real + c._real;
_image = _image + c._image;
}
Complex operator*(const Complex& c)
{
_real = _real * c._real - _image * c._image;
_image = _real * c._image + c._real * _image;
}
Complex operator/(const Complex& c)
{
Complex tmp;
tmp._real = (_real * c._real + _image * c._image)/(c._real * c._real + c._image * c._image );
tmp._image = (_image * c._real - _real * c._image)/(c._real * c._real + c._image * c._image );
return tmp;
}
private:
double _real; // 实部
double _image; // 虚部
};
int main()
{
Complex c1(2.2,1.1);
c1.Display();
Complex c2(2.1,2.3);
c2.Display();
Complex c3 = c2;
return 0;
}