??? 仿函數,就是是一個類的使用看上去象一個函數。其實現就是類中實現一個operator(),這個類就有了類似函數的行為,就是一個仿函數類了。
??? 在我們寫代碼時有時會發現有些功能的實現的代碼,會不斷的在不同的成員函數中用到,但是有不好將這些代碼單立出來成為一個類的一個成員函數。但是又很想復用這些代碼。寫一個公共的函數,可以,這是一個解決方法,不過函數用到的一些變量,就可能成為公共的全局變量,再說為了復用這么一片代碼,就要單立出一個函數,也不是很好維護。這時就可以用仿函數了,寫一個簡單類,除了那些維護一個類的成員函數外,就只是實現一個operator(),在類實例化時,就將要用的,非參數的元素傳入類中。這樣就免去了對一些公共變量的全局化的維護了。又可以使那些代碼獨立出來,以便下次復用。而起這些仿函數,還可以用關聯,聚合,依賴的類之間的關系,于用到他們的類組合在一起,這樣有利于資源的管理(這點可能是它相對與函數最顯著的有點了)。如果在配合上模板技術和policy編程思想,那就更是威力無窮了,大家可以慢慢的體會。
???? 在下只是拋磚引玉,希望大家多多指教。
posted on 2006-03-22 22:15
walkspeed 閱讀(800)
評論(3) 編輯 收藏 引用