转载:C++函数对象详解(附带实例) (biancheng.net)
重点:
1.如果一个类将()
运算符重载为成员函数,这个类就称为函数对象类,这个类的对象就是函数对象。
2.函数对象的优势在于:
(1)在函数调用之间保持状态或者将状态信息传递给函数的时候,每个对象有自己的信息,不必求助于全局或者局部静态变量,函数对象即保持了函数指针的灵活性,又封装了数据,保证他们的安全性
(2)使用函数对象作为比较器,比较操作将被内联处理,而使用函数指针不允许内联。
class Average
{
public:
Average() = default;
~Average() = default;
//折叠表达式
template<typename ...Args>
double operator()(int n,Args... args)//n作为个数输入
{
return (args + ... + 0)/n;//二元右折叠,0作为结束符号
}
};
int main()
{
Average avr;
//第一个参数6是个数
cout << avr(6,1, 2, 3, 4, 5, 6) << endl;
return 0;
}