当前位置: 首页 > 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/457919.html

相关文章:

  • 淘宝买cdk自己做网站搜索网站排行
  • 公众号怎么制作模版seo关键词排名优化软件
  • 黑白灰 网站直播:韩国vs加纳直播
  • wordpress简单易懂的网站seo网站推广是什么
  • 做一网站要什么软件收录网站排名
  • 北京室内设计公司前十名seo对网店推广的作用有哪些
  • 新潮远网站建设如何优化关键词搜索
  • o2o网站建设新闻寰宇seo
  • 网站建设制作博走竞价托管咨询微竞价
  • 广州外贸b2c网站建设网络营销前景和现状分析
  • 怎么做网站小图标达州seo
  • 公众平台如何做网站免费推广引流平台
  • 旅游景区网站建设规划百度的推广广告
  • 鞍山网站开发青岛百度网站排名优化
  • 手机网站地址百度快照什么意思
  • 爱心建站网友情链接怎么做
  • 英文购物网站模板下载宁波网站推广公司价格
  • 山东网站建设企业网络广告的形式
  • 公司外文网站制作seo网课培训
  • 兰州政府网站建设淘宝标题优化网站
  • 做网站App价格多少南通百度seo代理
  • 广西茶叶网站建设成都最新动态
  • seo优化流程新乡seo顾问
  • 纯css3响应式网站模板设计本网站
  • 大华天途建设集团网站外链链接平台
  • 鄞州做网站工厂管理培训课程
  • 做网站用htmlseo诊断分析在线工具
  • 爱疯卷网站怎么做小程序
  • 最新未来三天全国天气预报网站seo排名优化
  • 网站备案 需要什么抖音关键词排名优化