2012-01-03 44 views
0

聲明裏面的類的聲明和定義:
Integer operator+ (const Integer& right);不同的參數在重載運算

在類的外部定義:

Integer operator+ (const Integer& left, const Integer& right) 
{ 
    return left ; 
} 

這有什麼意義編譯器執行不同數量的參數在聲明和定義?

回答

4

你定義了兩個不同的operator+那裏。正確外的類定義是這樣的:

Integer Integer::operator+(const Integer& right) 
{ 
    return *this; 
} 
2

那些被視爲兩種不同的方法,即它被視爲方法重載。

+0

請詳細說明一下,沒明白你的意思。 – 2012-01-03 08:39:50

4

第一個是重載作爲成員函數二進制運算符,第二個是二進制運算符重載作爲非成員函數。

當操作者被定義爲一個構件,顯式參數的數量減少一個,作爲主叫對象作爲操作數隱式提供。因此,二元運算符沒有一個明確的參數和一元運算符。在二元運算符的情況下,左邊的操作數是調用對象,並且不會對其執行類型強制。

這與非成員運算符,其中左手操作數可以被強制。