亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

理解C++編程中的std::function函數封裝

2020-05-23 14:05:22
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了理解C++編程中的std::function函數封裝,std::function是C++11標準中的新特性,需要的朋友可以參考下
 

先來看看下面這兩行代碼:

std::function<void(EventKeyboard::KeyCode, Event*)> onKeyPressed;std::function<void(EventKeyboard::KeyCode, Event*)> onKeyReleased;

這兩行代碼是從Cocos2d-x中摘出來的,重點是這兩行代碼的定義啊。std::function這是什么東西?如果你對上述兩行代碼表示毫無壓力,那就不妨再看看本文,就當溫故而知新吧。

std::function介紹
類模版std::function是一種通用、多態的函數封裝。std::function的實例可以對任何可以調用的目標實體進行存儲、復制、和調用操作,這些目標實體包括普通函數、Lambda表達式、函數指針、以及其它函數對象等。std::function對象是對C++中現有的可調用實體的一種類型安全的包裹(我們知道像函數指針這類可調用實體,是類型不安全的)。

通常std::function是一個函數對象類,它包裝其它任意的函數對象,被包裝的函數對象具有類型為T1, …,TN的N個參數,并且返回一個可轉換到R類型的值。std::function使用 模板轉換構造函數接收被包裝的函數對象;特別是,閉包類型可以隱式地轉換為std::function。

最簡單的理解就是:

通過std::function對C++中各種可調用實體(普通函數、Lambda表達式、函數指針、以及其它函數對象等)的封裝,形成一個新的可調用的std::function對象;讓我們不再糾結那么多的可調用實體。一切變的簡單粗暴。
好用并實用的東西才會加入標準的。因為好用,實用,我們才在項目中使用它。std::function實現了一套類型消除機制,可以統一處理不同的函數對象類型。以前我們使用函數指針來完成這些;現在我們可以使用更安全的std::function來完成這些任務。

示例

#include <functional>#include <iostream> struct Foo {  Foo(int num) : num_(num) {}  void print_add(int i) const { std::cout << num_+i << '/n'; }  int num_;}; void print_num(int i){  std::cout << i << '/n';} struct PrintNum {  void operator()(int i) const  {    std::cout << i << '/n';  }}; int main(){  // 保存自由函數  std::function<void(int)> f_display = print_num;  f_display(-9);   // 保存 lambda 表達式  std::function<void()> f_display_42 = []() { print_num(42); };  f_display_42();   // 保存 std::bind 的結果  std::function<void()> f_display_31337 = std::bind(print_num, 31337);  f_display_31337();   // 保存成員函數  std::function<void(const Foo&, int)> f_add_display = &Foo::print_add;  Foo foo(314159);  f_add_display(foo, 1);   // 保存成員函數和對象  using std::placeholders::_1;  std::function<void(int)> f_add_display2= std::bind( &Foo::print_add, foo, _1 );  f_add_display2(2);   // 保存成員函數和對象指針  std::function<void(int)> f_add_display3= std::bind( &Foo::print_add, &foo, _1 );  f_add_display3(3);   // 保存函數對象  std::function<void(int)> f_display_obj = PrintNum();  f_display_obj(18);}

輸出:

-9423133731416031416131416218


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青草成人在线| 国产一区二区三区在线观看网站| 日韩电影中文 亚洲精品乱码| 91成人在线播放| 久久91精品国产| 久操成人在线视频| 亚洲第一区第二区| 成人欧美一区二区三区黑人孕妇| 日韩三级影视基地| 久久久亚洲欧洲日产国码aⅴ| 亚洲一区二区三区在线视频| 亚洲三级 欧美三级| 97久久精品在线| 亚洲欧美国产精品专区久久| 国产精品久久在线观看| 久久成年人视频| 正在播放欧美一区| 一本色道久久综合狠狠躁篇的优点| 81精品国产乱码久久久久久| 欧美国产日本高清在线| 久久福利网址导航| 精品二区三区线观看| 亚洲精品网站在线播放gif| 欧美有码在线观看| 国产97在线视频| 国产精品啪视频| 亚洲国产精品成人va在线观看| 久久久久久久久久久亚洲| 亚洲欧洲日本专区| 情事1991在线| 伊人久久免费视频| 国产精品久久久久9999| 97视频在线观看网址| 亚洲国产天堂久久综合| 亚洲日韩第一页| 成人中文字幕+乱码+中文字幕| 日韩欧美国产视频| 亚洲最大的av网站| 高清欧美性猛交| 97av在线视频免费播放| 欧美精品第一页在线播放| 国产日本欧美视频| 欧美视频在线观看免费网址| 国产精品久久久999| 97精品久久久中文字幕免费| 亚洲在线一区二区| 欧美日韩一区二区精品| 亚洲精品自拍偷拍| 在线播放亚洲激情| 亚洲精品网站在线播放gif| 欧美精品18videos性欧美| 欧美自拍视频在线观看| 国产精品户外野外| 欧美久久精品一级黑人c片| 日本精品视频在线| 日韩的一区二区| 欧美精品免费在线观看| 欧美精品在线免费| 欧美高跟鞋交xxxxxhd| 色综合伊人色综合网站| 欧美黑人性猛交| 国语自产精品视频在线看| 国产成人啪精品视频免费网| 久久九九亚洲综合| 97色在线观看免费视频| 55夜色66夜色国产精品视频| 日韩电影免费观看在线| 欧美体内谢she精2性欧美| 7m第一福利500精品视频| 日韩av网址在线观看| 久久久国产精品亚洲一区| 91久久国产精品91久久性色| 国产激情久久久| 亚洲人成网站免费播放| 日本不卡视频在线播放| 日韩欧美中文字幕在线播放| 亚洲网站视频福利| 在线日韩日本国产亚洲| 久久精品国产精品| 91成人精品网站| 欧美在线性爱视频| 亚洲欧美综合区自拍另类| 最近的2019中文字幕免费一页| 中文字幕一区二区三区电影| 九九九热精品免费视频观看网站| 欧美高清激情视频| 国产精品久久久久一区二区| 奇米一区二区三区四区久久| 日韩成人激情影院| 久久久久久久久久久久久久久久久久av| 欧美激情免费视频| 亚洲第一黄色网| 国产精品高清免费在线观看| 日韩一区二区精品视频| 欧美日韩国内自拍| 国产精品18久久久久久首页狼| 欧美激情视频在线免费观看 欧美视频免费一| 日韩在线中文视频| 国产网站欧美日韩免费精品在线观看| 亚洲成人激情视频| 伊人青青综合网站| 国产性猛交xxxx免费看久久| 欧美一区深夜视频| 国产精品免费网站| 国产精品一二三在线| 久久97久久97精品免视看| 久久精品国亚洲| 亚洲人成电影网站色xx| 日韩亚洲精品视频| 青青草精品毛片| 欧美乱妇40p| 国产一区二区三区在线看| 国产精品成人久久久久| 欧美大片在线免费观看| 色琪琪综合男人的天堂aⅴ视频| 亚洲国产精品yw在线观看| 国产精品夜色7777狼人| 中文字幕亚洲欧美一区二区三区| 亚洲一区二区久久久久久久| 欧美一区视频在线| 欧美久久精品午夜青青大伊人| 欧美激情久久久| 欧美猛男性生活免费| 日韩亚洲国产中文字幕| 国产成人av在线| 91国在线精品国内播放| 欧美国产日韩二区| 欧美日本中文字幕| 日本不卡免费高清视频| 成人国产精品久久久| 亚洲黄色在线看| 国产精品久久77777| 国产偷亚洲偷欧美偷精品| 国产精品久久久久久亚洲调教| 国产午夜精品一区理论片飘花| 欧美黑人巨大精品一区二区| 精品成人69xx.xyz| 亚洲成年网站在线观看| 欧美激情国产日韩精品一区18| 久久夜色精品亚洲噜噜国产mv| 国产精品国产三级国产aⅴ浪潮| 欧美日韩亚洲国产一区| 亚洲一级免费视频| 国内精品视频在线| 日本欧美精品在线| 欧美在线观看视频| 日韩欧美999| 欧美日韩在线免费观看| 国产97色在线| 亚洲精品久久久一区二区三区| 国产精品久久综合av爱欲tv| 国产欧美中文字幕| 亚洲精品国精品久久99热| 国产精品96久久久久久又黄又硬| 久久伊人91精品综合网站| 亚洲一二三在线| 亚洲精品丝袜日韩| 欧美激情小视频| 亚洲国产欧美一区二区三区同亚洲| 91精品国产综合久久男男| 久久精品国产久精国产一老狼| 亚洲第一福利在线观看| 亚洲欧美成人一区二区在线电影| 免费成人高清视频|