函数对象,仿函数
(1)是一个类,类中重载()运算符; eg: MyPrint p; p(111) ;
(2)内部可以记录状态,例如调用次数;
(3)作为类型,可以与普通函数和模板等作为参数使用;
代码分析
#include<iostream>
using namespace std;
class MyPrint
{
public:
MyPrint()
{
this->count=0;
}
void operator()(int num)
{
cout<<num<<endl;
count++;
}
int count;
};
void func( MyPrint &p, int num)
{
p(num);
}
void test01()
{
MyPrint print;
print(111);//(1)像函数一样调用,但是真实是一个类
print(222);
print(333);
print(444);
print(555);
print(666);
cout<<"函数调用次数:"<<print.count<<endl;//(2)可以保存内部状态,例如次数
func(print,777);//(3)作为类型使用
cout<<"函数调用次数:"<<print.count<<endl;
}
int main()
{
test01();
return 0;
}
版权声明:本文为YanWenCheng_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。