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