運算符在重載的時候有兩種方式,一是成員函數方式,二是成友元(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)
{
}