C++仿函数

C++仿函数

概念

仿函数是一个类,不是一个函数
重载函数操作符的类,其对象也称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数
函数对象使用
1.函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值
//定义一个相加的仿函数
class funadd {
public:
	int operator()(int a,int b){  //参数a b
		return a + b;      //返回值
	}
};
void test18() {
	funadd add; //函数对象
	cout << add(10, 20) << endl;  //像普通函数那样调用
}

输出的结果为30


2.函数对象超出普通函数的概念,函数对象可以有自己的状态

class funprint{
public:
	funprint() {
		this->count = 0; 
	}
	void operator()(string str){
		cout << str << endl;
		count++;
	}
	int count; //定义一个状态,统计函数调用了多少次
};
	
void test18() {
	funprint prt;
	prt("hello");
	prt("hello");
	prt("hello");
	cout << "调用了" << prt.count << "次" << endl;
}

输出结果
在这里插入图片描述


3.函数对象可以作为参数

//仿函数
class funprint{
public:

	void operator()(string str){
		cout << str << endl;
	}
};
	
void test18(funprint &fpt,string str) {
	fpt(str);   //使用函数对象
}

int main()
{
	funprint fpt;
	test18(fpt, "hello");  //将函数对象fpt做参数传递

输出结果为30

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶功隽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值