香河家具城网站建设目标,宁夏建设厅违规通报网站,百度移动,小程序定制开发的公司[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse、C Builder 技能种类: 逆向 驱动 磁盘 文件 研发领域: Windows应用软件安全/Windows系统内核安全/Windows系统磁盘数据安全/macOS应用软件安全 项目经历: 磁盘性能优化/文件系统数据恢复/文件信息采集/敏感文件监测跟踪/网络安全检测
[序言] std::function的主要作用是:存储, 复制和调用任何函数(通过指向它的指针), lambda表达式, 绑定表达式或其他函数对象, 以及指向成员函数的指针和指向数据成员的指针.
[使用方式大全]
1: 包装普通函数
int func(double) {return 0;
}
std::function func_wapper{func} ;
2: 包装Lambda表达式
int int_Data 5;
std::function func_wapper [](double){return int_Data;} ;
3: 包装std::bind对象
int func(double) {return 0;
}
std::functionvoid() func_wapper std::bind(func, 10) ;
func_wapper() ;
4: 包装类共有成员函数
class WAPPER
{
public:int mpu_fun_SubFunc(int int_param_A){return int_param_A ;}
};
std::functionint(WAPPER, int) func_wapper WAPPER::mpu_fun_SubFunc ;
WAPPER class_WAPPER ;
func_wapper(class_WAPPER, 10) ;
5: 包装类共有成员变量
class WAPPER
{
public:int mpu_int_Data{10} ;
};
std::functionint(WAPPER) func_wapper WAPPER::mpu_int_Data ;
WAPPER class_WAPPER ;
func_wapper(class_WAPPER) ;
6: 包装通过std::bind绑定的类共有成员函数
class WAPPER
{
public:int mpu_fun_SubFunc(int int_param_A){return int_param_A ;}
};
WAPPER class_WAPPER ;// 通过类对象绑定
std::functionint(int) func_wapper std::bind(WAPPER::mpu_fun_SubFunc,class_WAPPER,std::placeholders::_1) ;// 通过类对象指针绑定
std::functionint(int) func_wapper_ptr std::bind(WAPPER::mpu_fun_SubFunc,class_WAPPER,std::placeholders::_1) ;func_wapper(10) ;
func_wapper_ptr(10) ;
7: 利用std::mem_fn代替std::function进行包装类共有成员函数 这个比较简单: 更多代码可以从: https://en.cppreference.com/w/cpp/utility/functional/mem_fn 获取.
class WAPPER
{
public:int mpu_fun_SubFunc(int int_param_A){return int_param_A ;}
};
auto func_mem_wapper std::mem_fn(WAPPER::mpu_fun_SubFunc) ;
WAPPER class_WAPPER ;
func_mem_wapper(class_WAPPER, 10) ;
[总结] std::function, std::mem_fn, std::bind, 这3者之间的关系以及使用细节差异, 都是非常重要的. 在开发过程中, 是非常实用的技术, 使用场景非常广泛.