友元运算符重载函数

运算符重载函数除了可以作为类的成员函数外,还可以是非成员函数。在有关的类中声明它为友元函数。

下例是将运算符+重载为使用于复数加法,重载函数不作为成员函数,而放在类外,作为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<<")"<<endl;
}
int main()
{
    Complex c1(3,4),c2(5,-10),c3;
    c3=c1+c2;
    c3.display();
}

 

posted @ 2019-07-29 15:53  Overdo1996  阅读(250)  评论(0)    收藏  举报