仿函數(shù)就是使對象使用行為看上去像個函數(shù)。
函數(shù)的使用是這樣:
Function(param1,param2,...);
而對象的使用是這樣:
Object.memberfunction(param1,param2...);
而仿函數(shù)對象的使用是這個樣的
Object(param1,param2,...);
這樣我們可以看出,從外表上看,仿函數(shù)對象和函數(shù)是一個東西。呵呵,當(dāng)然他們是不同的。他們一樣???不過是在使用的外形上一樣罷了。
??? 一個仿函數(shù)類如下定義
??? 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;
??????????????? }
???????? }
?????????仿函數(shù)的關(guān)鍵是要實現(xiàn) operator() 運算符。