Posted on 2011-12-18 12:34
hoshelly 閱讀(1288)
評論(0) 編輯 收藏 引用
運算符重載函數一般采用兩種形式,一種是定義為類的成員函數,另一種是定義為類的友元函數。
大多數情況下,使用成員函數和友元函數重載運算符在功能實現上是相同的,重載時如果沒有本質的區別,則應該首先考慮使用成員函數以保證數據封裝。然而在某些情況下,如C++不能直接進行復數加、減、乘、除的四則運算,但是使用友元函數就可以實現重載這些運算符。
如 定義
class complex
{
public:
complex(){real=imag=0;}
complex(double r,double i)
{
real=r,imag=r;
}
friend complex operator+(const complex &c1,const complex &c2)
{
return complex(c1.real+c2.real,c1.imag+c2.imag);
}...
!注意友元運算符函數的參數類型是引用類型!
一般而言,以下兩種調用方法是等價的:
aa@ bb //隱式調用
operator @ (aa,bb) // 顯式調用
@為運算符
在實際開發過程中,單目運算符建議重載為成員函數,而雙目運算符建議重載為友元函數。通常下雙目運算符重載為友元函數比重載為成員函數更方便,但是有時雙目運算符必須重載為成員函數,例如賦值運算符。