成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊一聊C++bind函數使用

開發 后端
短短的一行代碼,實際上考驗了一個人對C++的掌握深度,好了話不多說,進入今天的介紹,c++ bind綁定函數。

 總述

最近寫代碼的時候看到代碼使用了bind,一個參數綁定的標準庫函數。程序是這么寫的, speaker_play_routine_ = new boost::thread

(boost::bind(&Speaker::playRoutine, this)); 這是我們一個語音播放的一行代碼。

其中 boost::thread是新建一個線程,線程執行函數是Speaker::playRoutine,執行函數被bind綁定函數可以修改普通函數來構造bind對象,bind函數的第二個參數是this(this 是 C++ 中的一個關鍵字,也是一個 const 指針,它指向當前對象,通過它可以訪問當前對象的所有成員)是Speaker::playRoutine類函數的參數。

短短的一行代碼,實際上考驗了一個人對C++的掌握深度,好了話不多說,進入今天的介紹,c++ bind綁定函數。

1.使用由來

我們看到我使用的代碼是boost :: bind,而大家在網上看到的大部分介紹是標準函數std :: bind,其實boost :: bind是標準函數std :: bind1st和std :: bind2nd的泛化。它支持任意函數對象,函數,函數指針和成員函數指針,并且能夠將任何參數綁定到特定值或將輸入參數路由到任意位置。bind對函數對象沒有任何要求; 特別地,它不需要result_type,first_argument_type和second_argument_type標準typedef。

2.使用介紹

通常我們可以將bind函數看作一個通用的函數適配器,它接受一個可調用對象,生成一個新的可調用對象來“適應”原對象的參數列表。bind可以根據當前已有的可調用對象,構造出一個新的可調用對象,有了bind,我們可以實現“動態生成新的函數”的功能。簡而言之,就是可以通過bind函數修改原函數并生成一個可以被調用的對象,類似于函數的重載,但是我們又不需要去重新寫一個函數,用bind函數就可以實現。

接下來我們看看bind函數是如何使用的呢?

綁定一個普通函數和函數指針:

  1. int fun(int a, int b,int c,int d,int e) 
  2.     return a + b - c + d - e; 
  3.  
  4. int main() 
  5.   int x=1,y=2,z=3; 
  6.   auto g =bind(fun,x,y,_2,z,_1); 

這樣的g 是一個有兩個參數的可調用對象,它的兩個參數分別用占位符_2 和_1表示。這個新的可調用對象將它自己的參數作為第三個和第五個傳遞給fun,fun函數的第一個、第二個第四個參數分別被綁定到給定的值x、y、z上。

綁定一個成員函數:

bind最常用的功能之一,是由類成員函數構造bind對象;想想看,如何由類成員函數(非static成員函數)構造回調函數?答案是很難,而通過bind,卻可以很容易做到。

  1. class Speaker { 
  2. public 
  3.     Speaker(); 
  4.     ~Speaker() 
  5.     { 
  6.         speaker_play_routine_->join(); 
  7.     } 
  8.     void playRoutine() 
  9.     { 
  10.     } 
  11. private 
  12.     boost::thread* speaker_play_routine_{nullptr}; 
  13. }; 
  14. int main() 
  15.    speaker_play_routine_ = new boost::thread(boost::bind(&Speaker::playRoutine, this)); 
  16.  } 

這里類的成員函數必須通過類的對象或者指針調用,因此在綁定時,bind要拿出第一個參數的位置來指定一個類的實例、指針或者引用。

注意:必須在成員函數前面加上取地址的操作符&。

參考文章:https://www.boost.org/doc/libs/1_65_1/libs/bind/doc/html/bind.html#bind.purpose.using_bind_with_functions_and_fu

本文轉載自微信公眾號「羽林君」,可以通過以下二維碼關注。轉載本文請聯系羽林君公眾號。

 

責任編輯:武曉燕 來源: 羽林君
相關推薦

2021-02-06 08:34:49

函數memoize文檔

2024-04-29 14:58:48

Python內置函數

2020-11-10 07:46:58

函數printf 數據

2020-10-30 07:11:31

C 語言編程

2022-08-30 07:39:57

C++namespace隔離

2022-05-18 16:35:43

Redis內存運維

2020-05-22 08:16:07

PONGPONXG-PON

2021-01-28 22:31:33

分組密碼算法

2023-09-22 17:36:37

2018-06-07 13:17:12

契約測試單元測試API測試

2021-08-29 18:34:44

編譯V8C++

2021-03-29 00:02:10

C#Attribute元素

2019-02-13 14:15:59

Linux版本Fedora

2020-10-15 06:56:51

MySQL排序

2018-11-29 09:13:47

CPU中斷控制器

2022-11-01 08:46:20

責任鏈模式對象

2021-01-29 08:32:21

數據結構數組

2022-08-08 08:25:21

Javajar 文件

2021-08-04 09:32:05

Typescript 技巧Partial

2023-07-06 13:56:14

微軟Skype
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美情趣视频 | 精品在线 | 日朝毛片| 日本五月婷婷 | 国产黄色在线观看 | 中文字幕四虎 | 亚洲自拍偷拍免费视频 | 欧美激情国产日韩精品一区18 | 中文字幕日韩欧美 | aa级毛片毛片免费观看久 | 在线不卡视频 | 一区二区三区四区免费观看 | 日韩成人免费视频 | 国产在线视频一区 | 久久激情视频 | 久久久激情 | 久久精品综合 | 精品一区二区视频 | 一级毛片免费完整视频 | 爱爱小视频 | 精品国产乱码久久久久久闺蜜 | 国产精品1区2区3区 一区中文字幕 | 永久av| 性高朝久久久久久久3小时 av一区二区三区四区 | 国产日韩精品在线 | 久久看片| 成人av一区二区三区 | 成人精品国产免费网站 | 午夜视频一区 | 天天操夜夜操 | 久久精品视频91 | 午夜爱爱毛片xxxx视频免费看 | 久久伊人影院 | 日韩视频在线一区 | 四虎成人免费视频 | 国产成人精品亚洲日本在线观看 | 亚洲激情av | 久久精品国产一区二区三区不卡 | 国产一区二区三区色淫影院 | 中文在线一区二区 | 亚洲国产精品日韩av不卡在线 |