我有一個分數類如下。將加法運算符重載爲非成員函數會更好嗎?
class Fraction
{
int num, den ;
public:
//member functions here
} ;
我讀過一些書,我認爲'有效的C++',它是更好的重載加法運算符作爲非成員函數。給出的原因是它允許交換加法。 這是我的加法運算符的重載函數的原型。
Fraction operator + (const Fraction &obj, const int add_int) ;
在這裏,當我打電話時,我必須這樣做。
f1 + 2 ;
但它不會這樣工作。
2 + f1 ;
爲此,我將不得不再次編寫函數並更改參數的順序。
我想知道是否有一種方法,我可以重載函數一次和執行交換加法?
你不能有一個支持這兩種表單的函數。您將不得不提供免費站立功能重載。 '分數操作符+(const分數&obj,const int add_int);'和分數操作符+(const int add_int,const分數&obj) ;',這是正確的方法去處理它 –
是否存在從'int'的隱式轉換到'Fraction'?如果是這樣,它可以完成,如果不是這樣的話 –
你稍微錯誤地指出Effective C++。它實際上聲明'當類型轉換應該適用於所有參數時聲明非成員函數' –