條目四十:若一個類是函數子,使它可適配

《條目四十:若一個類是函數子,使它可適配》

在stl中,下面的函數適配器能夠使函數指針轉換爲特定的類型,供下面的使用。函數

4個標準的函數配接器(not一、not二、bind1st和bind2nd)都要求一些特殊的類型定義,那些非標準的、與STL兼容的配接器一般也是如此。指針

可是若是是函數對象,那麼須要繼承基類函數適配器,實現特定的接口,使函數子擁有可適配的特性,這樣才能更加健壯,適用範圍更廣。對象

若是函數子類的operator()只有一個實參,那麼它應該從std::unary_function繼承;若是函數子類的operator()有兩個實參,那麼它應該從std::binary_function繼承。繼承

對於unary_function,你必須指定函數子類operator()所帶的參數的類型,以及返回類型;而對於binary_function,你必須指定三個類型:operator()的第一個和第二個參數的類型,以及operator()的返回類型。接口

傳遞給unary_function或binary_function的非指針類型須要去掉const和引用(&)部分。io

這樣作以後,就能夠實現提供函數對象配接器所須要的類型定義,這樣經過簡單的繼承,咱們就產生了可配接的函數對象。function

相關文章
相關標籤/搜索