仿函數就是使對象使用行為看上去像個函數。
函數的使用是這樣:
Function(param1,param2,...);
而對象的使用是這樣:
Object.memberfunction(param1,param2...);
而仿函數對象的使用是這個樣的
Object(param1,param2,...);
這樣我們可以看出,從外表上看,仿函數對象和函數是一個東西。呵呵,當然他們是不同的。他們一樣???不過是在使用的外形上一樣罷了。
??? 一個仿函數類如下定義
??? class ObjectFunction
??? {
??????? .......
??????? public:
??????????? 返回的類型 operator() ([param1,param2,...]);
???? };
???? 例1
???? class ObjectFunction1
???? {
????????? .......
????????? public:
????????????? void operator() () { count << "No Param ObjectFuntion" << endl;
????? };
??????例2
????? class?ObjectFunction2
????? {
?????????? ........
?????????? public:
?????????????? bool operator() (int x)
?????????????? {
?????????????????? count << "Have Param?ObjectFuntion" << endl;
?????????????????? count << "This is ObjectFuntion's Param" << x << endl;
???????????????????return true;
??????????????? }
???????? }
?????????仿函數的關鍵是要實現 operator() 運算符。