天天看點

C++函數對象總結

函數對象

重載函數調用操作符的類,其對象常稱為函數對象(function object),即它們是行為類似函數的對象,也叫仿函數,其實就是重載()操作符,使得類對象可以像函數那樣調用。

注意:

1 函數對象(仿函數)是一個類,不是一個函數。

2.函數對象(仿函數)重載了()操作符使得它可以像函數一樣調用。

分類:假定某個類有一個重載的operator(),而且重載的operator()要求擷取一個參數,就将這個類稱為一進制函數(unary functor);相反,如果重載的operator()要擷取兩個參數,就将這個類稱為二進制仿函數(bianry functor).

函數對象的作用主要是什麼?STL 提供的算法往往都有兩個版本,其中一個版本表現出最常用的某種運算,另一版本則允許使用者通過template參數的形式來指定所要采取的政策。

總結:函數對象通常不定義構造函數和析構函數,是以在構造和析構時不會發生任何問題,避免了函數調用的運作時問題。

函數對象超出普通對象的概念,函數對象可以由自己的狀态

函數對象可内聯編譯,性能好,用函數指針幾乎不可能

模闆函數對象使函數對象具有通用性,這也是它的優勢之一

謂詞

繼續閱讀