僞函數使用實例

函數指針有缺點,最重要的是它無法持有自己的狀態(局部狀態),也無法達到組件技術中的可適配性(也就是無法再將來某些修飾徐條件加上,以達到改變其狀態)。
因此,STL算法的特殊版本所接受的所謂的”條件“或”策略“或”一整組操作“都是以仿函數呈現的。
所謂仿函數(functor)就是使用起來像函數一樣的東西。如果對某個class進行operator()重載,它就是一個仿函數。
代碼示例:

#include<iostream>
#include <string>
using namespace std;

template <class T>
struct plus {
    T operator() (const T &x, const T &y) const
    {
        return x + y;
    }
};
template <class T>
struct minus {
    T operator() (const T &x, const T &y) const
    {
        return x - y;
    }
};

int main()
{
    plus<int> plus_obj;
    minus<int> minus_obj;

    cout << plus_obj(3, 5) << endl;
    cout << minus_obj(5, 3) << endl;

    cout << plus<int>() (3, 7) << endl;
    cout << minus<double>() (1.523, 4.0) << endl;

    system("pause");
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章