2012-12-13 36 views
5

對不起,如果這個問題得到報道,但我似乎無法輕鬆地在網上找到解決方案。如果我重寫operator()()它定義了什麼行爲?operator()()定義了什麼?

+4

這是函數調用操作符。你可能會發現這很有用:http://stackoverflow.com/questions/4421706/operator-overloading – chris

回答

8

operator()是函數調用操作符,即可以使用相應類型的對象作爲函數對象。第二組圓括號包含空的參數列表(通常情況下)。例如:

struct foo { 
    int operator()() { return 17; }; 
}; 

int main() { 
    foo f; 
    return f(); // use object like a function 
} 

上面的例子只是顯示了操作符是如何聲明和調用的。一個現實的用法可能會訪問運算符中的成員變量。函數對象在標準C++庫中的許多地方被用作定製點。使用對象而不是函數指針的優點是函數對象可以附加數據。

+0

有點難以看出它在你的例子中如何有用。 – dreamlax

+0

@dreamlax:我添加了一個簡短的描述,但對於在現有答案中尋找哪些函數對象的解釋。 –

+0

+1:很好的增加信息。 – dreamlax

相關問題