2012-06-11 268 views

回答

3

它的工作原理完全一樣的所有運營商的符號,可限定 一元或二元運算符(+-&是其他的),它 取決於參數的函數將採取數。因此,一個 一元*應該定義爲採用單個運算符,或者作爲不帶參數的 非靜態類成員(除this之外),或者作爲採用單個自變量的自由函數 。二進制操作者應定義爲兩個參數 ,無論是作爲一個非靜態類成員 帶一個參數(除了this),或遊離函數服用 兩個參數。

請注意,功能的名稱被認爲是相同的,所以二進制版本可以隱藏一個一元版本,反之亦然。

10

他們是獨立的經營者,哪一個你重載取決於哪些參數傳遞給操作者。

struct A 
{ 
    //dereference operator 
    A /*or whatever*/ operator *() { /*...*/ }; 
    //multiply operator   
    A operator *(const A&) { /*...*/ }; 
}; 

//... 
A a; 
*a; //calls dereference operator 
a * a; //calls multiply operator