当前位置: 首页 > wzjs >正文

龙岩做网站设计公司浙江百度推广

龙岩做网站设计公司,浙江百度推广,企业公示信息查询系统黑龙江,商城网站建设策划书C11 包装器 函数指针与回调函数 对于函数而言,函数名即函数指针,使用同类型的函数指针变量,可以实现对其所指向的函数进行传递。 void func1(int a, int b); .... void func8(int a, int b);void doSomething(void(*func)(int, int), int …

C++11 包装器

函数指针与回调函数

对于函数而言,函数名即函数指针,使用同类型的函数指针变量,可以实现对其所指向的函数进行传递。

void func1(int a, int b);
....
void func8(int a, int b);void doSomething(void(*func)(int, int), int a, int b)
{...func(a, b);...
}

doSomething函数中,func回调函数,通过函数指针进行传递并调用。

可以根据传入的函数指针来进行不同的操作,而不用关心具体的func功能。


std::function

使用需要 functional 头文件

std::function 是一个通用的可调用对象的封装。

它允许你将任何可调用实体(例如函数、函数指针、成员函数指针、lambda表达式等)存储为一个函数对象(仿函数),并以一种统一的方式进行调用

void myFunc(int x);class MyClass
{
public:void myFunc(int x);static void stFunc(int x);
};//仿函数
class MyFunc
{
public:void operator()(int x);
};//普通函数
std::function<void(int)> func1(myFunc);//普通成员函数,不要忘记this指针
std::function<void(MyClass&,int)> func2(&MyClass::myFunc);//静态成员函数
std::function<void(int)> func3(MyClass::stFunc);//仿函数
std::function<void(int)> func4(MyFunc());//lambda表达式
std::function<void(int)> func5([](int x)->void {});

对于std::function对象的使用,根据其参数列表进行类似仿函数的使用方式即可

//普通函数
func1(2023);//普通成员函数
MyClass my;
func2(&my, 7);//静态成员函数
func3(27);//仿函数
func4(13);//lambda表达式
func5(34);

std::bind

std::bind是一个函数模板,用于创建一个新的可调用对象,并绑定到特定的参数或对象。

可以通过 std::bind 将可调用实体与特定的参数绑定在一起,生成一个新的函数对象。这在需要更改函数签名或固定部分参数时非常有用。

请添加图片描述


绑定普通函数:

void myFunc(int x, int y);//使用std::bind绑定y为27
auto bindFunc = std::bind(myFunc, std::placeholders::_1, 27);bindFunc(7);

上述中,使用std::bindmyFunc与第二个参数27绑定在一起,生成新的函数对象bindFunc

_1:是占位符,用于表示调用时传入的参数, 表示调用时的第一个参数。

_2, _3, …同理


绑定成员函数示例:

class MyClass
{
public:void myFunc(int x);
};MyClass my;
std::function<void(int)> func = std::bind(&MyClass::myFunc, &my, std::placeholders::_1);func(2023); //绑定到对象my, 相当于my.myFunc(2023)

Lambda替代bind

void myFunc(int x, int y);//绑定y为27
auto bindFunc = [](int x) { myFunc(x, 27)};bindFunc(7);

#include <iostream>
#include <functional>class MyClass
{
public:void myFunc(int x){cout << x << endl;}
};int main()
{MyClass my;std::function<void(int)> func = [&my](int x)->void { my.myFunc(x)};func(2023); 
}

🦀🦀观看~~

http://www.dtcms.com/wzjs/516248.html

相关文章:

  • layui做的网站平台做推广的技巧
  • wordpress如何跳转页面代码惠州seo排名
  • 网站的建设和编程杭州营销策划公司排名
  • 通州青岛网站建设重庆seo关键词优化服务
  • wordpress笑话站主题张家界百度seo
  • 魔兽做图下载网站cpc广告点击日结联盟
  • 北京建站网站建设合同模板
  • 重庆巴南网站制作东营网站建设
  • 永春建设局网站百度竞价托管费用
  • 做电子签章登录哪个网站杭州上城区抖音seo有多好
  • wordpress 显示文章标签浙江seo推广
  • 网站制作素材南昌seo排名优化
  • 开发网站心得搜索引擎推广有哪些
  • 个人支付接口支持wordpress青岛seo排名公司
  • 桥的设计网站建设网站seo设置是什么
  • 做俄罗斯网站关于seo的行业岗位有哪些
  • 网站制作好公司网站链接交易
  • 委托网站开发合同发稿网
  • 那些知名网站是外包做的搜索引擎推广
  • 高端品牌鞋子排行榜前十名seo网络营销公司
  • 网站开发需不需要考研3d建模培训班一般多少钱
  • 网站设计贵不贵网站快速排名服务
  • 字体安装+wordpressseo推广平台服务
  • 做一个平台 网站服务器搭建成都网站seo技术
  • 做代购网站广东seo网站优化公司
  • 分类网站作用公司网站设计定制
  • 稿定设计简单好用的在线设计平台常州网站seo
  • 鹏牛网做网站怎么样站长之家网站
  • 怎么做自己的门户网站网络营销策略论文
  • 建设银行大连市分行网站站内推广有哪些方式