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

C++ std::function简单笔记

基本形式

#include <iostream>
#include <functional>/**
* 1. C++11新增的类型别名声明方式
*/using pFunc1 = void();						//普通函数
using pFunc2 = void(int, int);				//带参数的函数
using pFunc3 = int(int, int);				//带参数和返回值的函数
using pFunc4 = void* ();					//返回指针的函数
using pFunc5 = const char* ();				//返回常量(底层)指针的函数
using pFunc6 = char* const();				//返回常量(顶层)指针的函数
using pFunc7 = const char* const(); ;		//返回常量指针(底层+顶层)的函数std::function<void()> f1;
std::function<void(int, int)> f2;
std::function<int(int, int)> f3;
std::function<void* ()> f4;
std::function<const char* ()> f5;
std::function<char* const()> f6;
std::function<const char* const()> f7;/**
* 测试函数
*/
void func1()
{std::cout << __FUNCTION__ << std::endl;
}
void func2(int x, int y)
{std::cout << __FUNCTION__ << std::endl;
}
int func3(int x, int y)
{std::cout << __FUNCTION__ << std::endl;return 0;
}
void* func4()
{std::cout << __FUNCTION__ << std::endl;return nullptr;
}
const char* func5()
{std::cout << __FUNCTION__ << std::endl;return nullptr;
}
char* const func6()
{std::cout << __FUNCTION__ << std::endl;return nullptr;
}
const char* const func7()
{std::cout << __FUNCTION__ << std::endl;return nullptr;
}int main(int argc, char* argv[])
{f1 = func1;f2 = func2;f3 = func3;f4 = func4;f5 = func5;f6 = func6;f7 = func7;//以下均属出自身函数名(func1, func2...)f1();f2(0, 0);f3(0, 0);f4();f5();f6();f7();//可查看封装的函数指针类型std::cout << f1.target_type().name() << std::endl;std::cout << f5.target_type().name() << std::endl;std::cout << f4.target_type().name() << std::endl;//可使用target查看封装的函数指针地址(模板参数不能使用类型别名声明的类型)auto p1 = f1.target<void(*)()>();std::cout << p1 << std::endl;auto p7 = f7.target<const char* const(*)()>();std::cout << p7 << std::endl;/*** std::function支持拷贝,移动操作,在此不做赘述*/return 0;
}
http://www.hskmm.com/?act=detail&tid=33973

相关文章:

  • 【C++】基于asio的异步https server
  • tryhackme-预安全-网络安全简介-网络职业-03
  • tryhackme-预安全-网络安全简介-防御性安全简介-02
  • 明天发点东西
  • Luogu P14254 分割(divide) 题解 [ 蓝 ] [ 分类讨论 ] [ 组合计数 ]
  • 嵌入式第六周作业任务二--PWM呼吸灯
  • 2022 ICPC Shenyang
  • tryhackme-预安全-网络安全简介-进攻性安全简介-01
  • 20231326第五周预习报告
  • 复矩阵的奇异值分解(SVD)
  • idea与cursor的整合方案
  • Codeforces Round 496 (Div. 3) F. Berland and the Shortest Paths
  • 《程序员修炼之道:从小工到专家》第五章读后感
  • 元推理框架,有机AI是天使
  • PWN手的成长之路-18_铁人三项(第五赛区)_2018_rop
  • Dotnet通过Http2解决CVE-2025-55315高危漏洞
  • 日志|JAVAWEB|YApi|vue-cli|VUE-Element
  • 20232401 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • FFT学习小结
  • OI 笑传 #20
  • 幂等的双倍快乐,你值得拥有
  • 2025.10.18——1黄
  • 10.18总结
  • 10.17总结
  • 软考中级学习总结(2)
  • 2025年粉末冶金制品/零件厂家推荐排行榜,高精度耐磨粉末冶金零件,优质粉末冶金制品公司推荐!
  • Neo4j 图数据库搭建和 Springboot 访问
  • 2025粉末冶金制品优质厂家推荐:鸿瑞粉末冶金,专业定制品质卓越!
  • AI元人文理论框架体系研究:价值原语化的文明演进机制与治理范式转变——声明Ai研究
  • 20251018