??? 仿函數就是使對象使用行為看上去像個函數。
??? 函數的使用是這個樣的
??? 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() 運算符。
?????
posted on 2006-03-23 23:22
walkspeed 閱讀(5708)
評論(7) 編輯 收藏 引用