天天看點

運算符重載:友元(friend)函數問題

 運算符在重載的時候有兩種方式,一是成員函數方式,二是成友元(friend)函數方式。 

成員函數比較簡單。下面是一個示例代碼: 

class Complex 

private: 

double real; 

double img; 

public: 

Complex(){} 

Complex(double i,double j):real(i),img(j) 

        Complex operator+(const Complex &cx) 

        { 

                return Complex(real+cx.real,img+cx.img); 

        } 

}; 

如果是設定成友元函數,一定要注意: 

(1)當重載友元函數時,将沒有隐含的參數this指針。這樣,對雙目運算符,友元函數有2個參數,對單目運算符,友元函數有一個參數。 

(2)有些運作符不能重載為友元函數,它們是:=,(),[]和->。 

是以,上面那個+運算符如果是重載為友元函數的話,應該寫成: 

    double real; 

    double img; 

    public: 

    Complex(){} 

    Complex(double i,double j):real(i),img(j) 

    { 

    } 

繼續閱讀