#include <iostream>
using namespace std;
class Complex{
public:
Complex(double r=0.0,double i=0.0):m_r(r),m_i(i){} //构造函数
void print(void)
{
cout<<'('<<m_r<<'+'<<m_i<<"i)"<<endl;
}
//方式二:成员函数,优先选择成员函数
const Complex operator+(const Complex& c)
{
cout<<"成员函数"<<endl;
return Complex(m_r+c.m_r,m_i+c.m_i);
}
private:
double m_r;
double m_i;
//全局函数的友元
/*
friend const Complex operator+(const Complex&,const Complex&);
*/
};
//方式1:全局函数
/*
const Complex operator+(const Complex& c1,const Complex&c2)
{
cout<<"友元函数"<<endl;
return Complex(c1.m_r+c2.m_r,c1.m_i+c2.m_i);
}
*/
int main(void)
{
Complex c1(10,20),c2(30,40);
c1.print();
c2.print();
Complex c3=c1+c2; //c3=operator+(c1,c2);
//c3=c1.operator+(c2);
c3.print();
return 0;
}