2014-02-20 150 views
0

我是C++的新手,並試圖理解重載的概念。重載運算符

+3

你可以給一個「重新定義一個操作符」的例子或者你看過它的地方嗎?這不是一個常用術語。 –

+0

由於「一個定義規則」(One Definition Rule)的規定,一切最多隻能定義一次,因此通常不能重新定義C++中的任何內容。 –

回答

2

「操作符重載」是爲其中一個C++操作符提供自定義實現的常用術語。

它被稱爲「超載」,因爲,在某些情況下,你在概念上重載一個新的重載需要您的自定義類型的對象作爲參數的函數[email protected](其中@是一些運算符)。當你開始定義運營商爲你的類型的成員

/** 
* Doesn't actually exist in this form, but conceptually 
* this exists built in to the language. 
*/ 
int operator+(int, int); 

/** 
* Your overload of the `operator+` function, which takes 
* `MyClass`s. 
*/ 
MyClass operator+(const MyClass&, const MyClass&); 

術語變得不準確,因爲MyClass::operator+不超載::operator+;最好它會隱藏它(例如ADL),在最壞的情況下它只是在名稱查找期間更好的匹配。但是,「運營商超載」仍然存在。相反,如果您試圖徹底重新定義現有的運算符重載,那麼您的編譯器和/或鏈接器將阻止構建成功,因此「重新定義運算符」對於任何有效的工作都不是公認的術語。

+0

只是添加到這個答案,沒有重新定義一個操作符這樣的事情。運營商在那裏,我們被允許超載大部分。 –