C++函数对象

函数对象

定义了调用操作符的类,其对象常称为函数对象,即它们是行为类似函数的对象。

struct absInt

{

int operator() (int val)

{

    return val<0 ? –val : val;

}

};

int i=-42;

abdInt absObj;

unsigned int ui=absObj(i);//calls about absInt::operator(int)

函数调用操作符必须声明为成员函数,我们仍然可以“调用”该对象,效果是运行由absObj对象定义的重载调用操作符,该操作符接受一个int值并返回它的绝对值。函数调用操作符必须定义为成员函数,且可以对其重载。

 

函数对象用于标准库算法,

bool GT6(const string& s)

{

    return s.size()>=6;

}

vector<string>::size_type wc=count_if(words.begin(),words.end(),GT6);

使用GT6作为传给count_if 算法的实参,以计算使GT6返回true的单词的数目。

Class GT_cls

{

public:

GT_cls(size_t  val=0):bound(vala) { }

bool  operator()(const string& s)

{

    return s.size()>=bound;

}

private:

    std::string::size_type blund;

};

Count_if(words.begin(),words.end(),GT_cls(6))//测试其中字符长度大于6的个数。

 

标准库定义的函数对象

算数函数对象类型

+ - * /    plus<type>

关系函数对象类型 

== = >  >= < <= 

逻辑函数对象类型

&& | !

以上都已经定义为成了模板类,实例化的时候,可以成为函数对象进行使用

还是原来的定义,函数对象,就是行为类似函数的对象,而对象是类的一个实例。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zanglengyu

敲碗要饭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值