聲明裏面的類的聲明和定義:
Integer operator+ (const Integer& right);
不同的參數在重載運算
在類的外部定義:
Integer operator+ (const Integer& left, const Integer& right)
{
return left ;
}
這有什麼意義編譯器執行不同數量的參數在聲明和定義?
聲明裏面的類的聲明和定義:
Integer operator+ (const Integer& right);
不同的參數在重載運算
在類的外部定義:
Integer operator+ (const Integer& left, const Integer& right)
{
return left ;
}
這有什麼意義編譯器執行不同數量的參數在聲明和定義?
你定義了兩個不同的operator+
那裏。正確外的類定義是這樣的:
Integer Integer::operator+(const Integer& right)
{
return *this;
}
那些被視爲兩種不同的方法,即它被視爲方法重載。
第一個是重載作爲成員函數二進制運算符,第二個是二進制運算符重載作爲非成員函數。
當操作者被定義爲一個構件,顯式參數的數量減少一個,作爲主叫對象作爲操作數隱式提供。因此,二元運算符沒有一個明確的參數和一元運算符。在二元運算符的情況下,左邊的操作數是調用對象,並且不會對其執行類型強制。
這與非成員運算符,其中左手操作數可以被強制。
請詳細說明一下,沒明白你的意思。 – 2012-01-03 08:39:50