程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++中仿函數的應用

C++中仿函數的應用

編輯:關於C++

在使用仿函數的時候,主要用到以下兩種:一種是以基類std::unary_function派生出來的派生類;另一種是以基類std::binary_function派生出來的派生類。而這兩種有什麼區別呢?它們之間的區別只是第一種接收的參數個數為一個,而第二種接收的參數的個數為兩個。僅此而已。

好了,我們還是來幾個例子看看:

第一種的使用

template<typename T>
class MeetsThreshold: public std::unary_function<Widget, bool>{
private:
const T threshold;
public:
MeetsThreshold(const T& threshold);
bool operator()(const Widget&) const;
...
};

第二種的使用

struct WidgetNameCompare:
public std::binary_function<Widget, Widget, bool>{
bool operator()(const Widget& lhs, const Widget& rhs) const;
};

注意:上面所說的接收參數的個數也就是仿函數裡面的重定義函數調用操作符中的所接收的參數個數於類型,他們是相一致的。

上面是介紹stl庫中的仿函數,而另外一個庫中也有仿函數(Loki庫),如果想詳細其中的實現,可以下載Loki庫來進行研究。

你在進行讀Loki庫中的Functor的時候,必須首先要了解那段火星代碼,也就是Typelist,這個是整個泛型編程的精髓,實現了模板的完美遞歸。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved