函数对象和谓词

函数对象: 
重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。
这是通过重载类的operator()来实现的。
“在标准库中,函数对象被广泛地使用以获得弹性”,标准库中的很多算法都可以使用函数对象或者函数来作为自定的回调行为;
谓词:
一元函数对象:函数参数1个;
二元函数对象:函数参数2个;
一元谓词 函数参数1个,函数返回值是bool类型,可以作为一个判断式
                 谓词可以是一个仿函数,也可以是一个回调函数。
二元谓词 函数参数2个,函数返回值是bool类型

#include <iostream>

using namespace std;

template <class T>
class Test
{
private:
    T t;
public:
    Test(T t)
    {
        this->t = t;
    }
    ~Test()
    {

    }
    void operator()(T& t1)  //重载 ()
    {
        cout << "you are beautiful" << endl;
    }

    void operator()(T& t1, T& t2)  //重载 ()
    {
        cout << "you are welcome!" << endl;
    }
};

void func1()
{
    Test<int> t(1);
    int a = 2;
    int b = 3;
    t(a); //t(a) 是一个对象  一元谓词
    t(a, b); //二元谓词
}

int main()
{
    func1();

    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值