对运算符重载的函数的处理方式:
1、把运算符重载的函数作为类成员函数
2、运算符重载的函数不是类成员函数(可以是一个普通函数),在类中把它声明为友元函数。
3、友元运算符重载函数。
例:将运算符"+"重载为适用于复数加法,重载函数不作为成员函数,而放在类外,作为Complex类的友元函数。
#include<iostream>
using namespace std;
class Complex
{
public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
friend Complex operator+(Complex &c1,Complex &c2);//重载函数作为友元函数
void display()
private:
double real;
double imag;
};
Complex operator+(Complex &c1,Complex &c2)//定义运算符"+"重载函数
{
return Complex(c1.real+c2.real;c1.imag+c2.imag);
}
void Complex::display()
{
cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
int main()
{
Complex c1(3,4),c2(5,-10),c3;
c3=c1+c2;
cout<<"c1=";c1.display();
cout<<"c2=";c2.display();
return 0;
}