C++函数对象详解附带实例
如果一个类将()运算符重载为成员函数,这个类就称为函数对象类,这个类的对象就是函数对象。函数对象是一个对象,但是使用的形式看起来像函数调用,实际上也执行了函数调用,因而得名。average 是一个对象,average 实际上就是 average.operator,这使得 average 看上去像函数的名字,故称其为函数对象。因此调用该 accmulate 模板时,形参 op 对应的实参只能是函数名、函数指针或者函数对象。下面的程序通过 accumulate 模板求一个 vector 中元素的平方和,其中用到了函数对象。因此函数对象的功能比普通函数更强大。list 容器的 sort 成员能将元素从小到大排序。同样地,对关联容器的 find 和 count 成员函数以及其他一些在有序区间上的 STL 算法而言,在自定义比较器 op 的情况下,x和y相等与op和op都为假是等价的。
用户评论