c++ std::function

测试代码:

cpp 复制代码
#include <iostream>
#include <functional>

int addFunc(int a, int b) {
	return a + b;
}

void testFunction() {
	// 声明一个function,接受俩个int参数,返回int数据
	std::function<int(int, int)> func;

	// 绑定不同的可调用对象

	// 普通函数
	func = addFunc;
	cout << "9526 + 1 :" << func(9526, 1) << endl;

	// lambda表达式
	func = [](int a, int b) { return a - b;};
	cout << "9528 - 1 :" << func(9528, 1) << endl;

	// 成员函数
	class Calculator {
	public:
		int sub(int a, int b) { return a - b; }

		static int staticFuncAdd(int a, int b) { return a + b; }
	};
	Calculator calc;
	// 绑定对象和成员函数
	func = std::bind(&Calculator::sub, &calc, std::placeholders::_1, std::placeholders::_2);
	cout << "0 - 1 = " << func(0, 1) << endl;

	// 绑定静态成员函数
	func = &Calculator::staticFuncAdd;
	cout << "1 + 1 = " << func(1, 1) << endl;

	//仿函数
	class Divider {
	public:
		int operator()(int a, int b) {
			return a / b;
		}
	};
	Divider div;
	func = div;
	cout << "10 / 3 = " << func(10, 3) << endl;
}

打印:

ok

相关推荐
许泽宇的技术分享7 小时前
第 1 章:认识 Claude Code
开发语言·人工智能·python
45288655上山打老虎7 小时前
QFileDialog
c++
AIFQuant7 小时前
如何利用免费股票 API 构建量化交易策略:实战分享
开发语言·python·websocket·金融·restful
Hx_Ma167 小时前
SpringMVC返回值
java·开发语言·servlet
独自破碎E7 小时前
【滑动窗口+字符计数数组】LCR_014_字符串的排列
android·java·开发语言
2601_949480068 小时前
【无标题】
开发语言·前端·javascript
Jack_David8 小时前
Java如何生成Jwt之使用Hutool实现Jwt
java·开发语言·jwt
瑞雪兆丰年兮8 小时前
[从0开始学Java|第六天]Java方法
java·开发语言
WBluuue8 小时前
Codeforces 1076 Div3(ABCDEFG)
c++·算法
u0109272718 小时前
模板编译期排序算法
开发语言·c++·算法