#include <windows.h>
#include <iostream>
using namespace std;
class Complex
{
public:
Complex(double real = 0,double img = 0) : m_real(real),m_img(img) { }
void Display() const
{
cout<<"m_real: "<<m_real<<endl<<"m_img: "<<m_img<<endl<<endl;
}
/*********************************************************************************************/
Complex Add(const Complex &other) const //1.1类成员函数
{
Complex temp;
temp.m_real = m_real + other.m_real;
temp.m_img = m_img + other.m_img;
return temp;
}
// Complex operator+(const Complex &other) const //1.3操作符重载 (类成员)
// {
// Complex temp;
// temp.m_real = m_real + other.m_real;
// temp.m_img = m_img + other.m_img;
// return temp;
// }
friend Complex complex_add(const Complex &comp1,const Complex &comp2); //1.2全局函数
friend Complex operator+(const Complex &comp1,const Complex &comp2); //1.4操作符重载 (全局友元)
/*********************************************************************************************/
// bool operator== (const Complex &other) //2.1双目操作符重载 (类成员)
// {
// return (m_real == other.m_real) && (m_img == other.m_img);
// }
//
// bool operator!=(const Complex &other) //2.2双目操作符重载 (类成员)
// {
// return !(*this==other);
// }
//
// Complex operator-() //2.3单目操作符重载 (类成员)
// {
// Complex temp;
// temp.m_real = -m_real;
// temp.m_img = -m_img;
// return temp;
// }
friend bool operator==(const Complex &comp1,const Complex &comp2); //2.4双目操作符重载 (全局友元)
friend bool operator!=(const Complex &comp1,const Complex &comp2); //2.5双目操作符重载 (全局友元)
friend Complex operator-(const Complex &other); //2.6单目操作符重载 (全局友元)
/*********************************************************************************************/
private:
double m_real;
double m_img;
};
Complex complex_add(const Complex &comp1,const Complex &comp2)
{
Complex temp;
temp.m_real = comp1.m_real + comp2.m_real;
temp.m_img = comp1.m_img + comp2.m_img;
return temp;
}
Complex operator+(const Complex &comp1,const Complex &comp2)
{
Complex temp;
temp.m_real = comp1.m_real + comp2.m_real;
temp.m_img = comp1.m_img + comp2.m_img;
return temp;
}
bool operator==(const Complex &comp1,const Complex &comp2)
{
return (comp1.m_real == comp2.m_real) && (comp1.m_img == comp2.m_img);
}
bool operator!=(const Complex &comp1,const Complex &comp2)
{
return !(comp1 == comp2);
}
Complex operator-(const Complex &other)
{
Complex temp;
temp.m_real = -other.m_real;
temp.m_img = -other.m_img;
return temp;
}
void main(int argc,TCHAR*argv[])
{
Complex comp1(3.0,2.0),comp2(6.0,8.0),comp3;
comp1.Display();
comp2.Display();
//comp3 = comp1.Add(comp2);
//comp3 = complex_add(comp1,comp2);
comp3 = comp1 + comp2;
comp3.Display();
Complex comp4(9.0,10.0);
if(comp1!=comp2)
cout<<"comp1 不等于 comp2"<<endl;
if(comp3==comp4)
cout<<"comp3 等于 comp4"<<endl;
Complex comp5;
comp5 = -comp4;
comp5.Display();
}