函数对象(仿函数)

  • Post author:
  • Post category:其他

函数对象,仿函数
(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 版权协议,转载请附上原文出处链接和本声明。