2013-10-22 53 views

回答

0

Operator只是給中綴函數(在它們的參數之間寫的)賦予的一個時髦名稱。所以,1 + 2只是一個+(1, 2)Overloading意味着你定義幾個函數(或運營商,這是同樣的事情)是這樣的:

int square(int x); 
double square(double x); 

int operator + (int x, int y); 
double operator + (double x, double y); // * 

當這些被調用別的地方,C++不僅決定的名字,同時也得到了類型調用哪一個的實際論點。所以當你寫square(5)第一個被調用,當你寫square(5.0)第二個。請注意,在更復雜的情況下,重載分辨率(確定調用哪個函數)爲much more tricky

也許你的意思的情況下,當你的操作是不超載的功能,但作爲一個方法(即它的第一個參數使用thiscall傳遞),並且你想重載一個二元運算符在它的第二個參數。 Here's how it's done.

(*)其實,你不能宣佈operator +intdouble,因爲這是建立在爲編譯器。

+0

Ohhhh。 Ook我明白了,我只是對什麼是重載意味着什麼,以及如何使用它的函數看起來很困惑。 – JustAnotherUser