??? 仿函數(shù)就是使對(duì)象使用行為看上去像個(gè)函數(shù)。
??? 函數(shù)的使用是這個(gè)樣的
??? Function(param1,param2,...)
??? 而對(duì)象的使用是這個(gè)樣的
??? Object.memberfunction(param1,param2...)
??? 而仿函數(shù)對(duì)象的使用是這個(gè)樣的
??? Object(param1,param2,...)
??? 這樣我們可以看出,從外表上看,仿函數(shù)對(duì)象和函數(shù)是一個(gè)東西。呵呵,當(dāng)然他們是不同的。他們一樣不過(guò)是在使用的外形上一樣罷了。
??? 一個(gè)仿函數(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)鍵是要實(shí)現(xiàn) operator() 運(yùn)算符。
?????
posted on 2006-03-23 23:22
walkspeed 閱讀(5708)
評(píng)論(7) 編輯 收藏 引用