0
点赞
收藏
分享

微信扫一扫

C++--函数对象(仿函数)

函数对象的优点和基本使用

  • 优点:可以有内部属性,可以作为变量进行传递,虽然函数指针同样可以
//函数对象
//函数对象:仿函数,像函数但其实是一个类。相比函数有很多优点:可以有内部的属性,可以作为一个变量进行传递(函数指针类似)
class myAdd						//一个仿函数,实现两个整型相加
{
public:
	int count;				//统计仿函数调用的次数,如果用普通函数的话,count就只能使用全局变量来实现了。
	myAdd()
	{
		count = 0;
	}
	int operator()(int v1, int v2)
	{
		count++;
		return v1 + v2;
	}
};
void test()
{
	myAdd ma;
	ma(10, 20);
	ma(10, 10);
	ma(10, 30);
	cout << ma(10, 40) << endl;
	cout << ma.count << endl;
}
void printFunObj(int a, int b, myAdd& m)			//函数对象,类似于C语言的回调函数,扩展函数接口
{
	//输出m的二倍值
	cout << 2 * m(a, b) << endl;
}
int main()
{
	test();
	myAdd ma;
	printFunObj(333, 666, ma);
	return 0;
}

在这里插入图片描述

举报

相关推荐

0 条评论