C++中使用function和bind綁定類成員函數(shù)的方法詳解
定義一個普通的類
class Test1{ public: void fun(int val){ cout<<"hello world "<<val<<endl; } };
開始第一個測試
int main(){ Test1 t; function<void(int)> pf = std::bind(&Test1::fun,t,2); pf(4); // return 0; }
輸出的值是2,說明pf傳進(jìn)去的4并沒有什么用,在bind的時候值已經(jīng)綁定死了,但是pf()這樣不給參數(shù)會報錯。
如果我們想自定義參數(shù),使用占位符,std::placeholders::_1,可以看下圖,輸出的值是4了
int main(){ Test1 t; function<void(int)> pf = std::bind(&Test1::fun,t,std::placeholders::_1); pf(4); return 0; }
使用C++11新特性lambda表達(dá)式,注意[]要有一個&,這個意思是指可修改當(dāng)前作用域的變量。不過這樣頁會是邦死狀態(tài)
int main(){ Test1 t; function<void(int)> pf = [&](int val){t.fun(2);}; pf(4); return 0; }
所以宗上所述,如果想自定義值的話,還是使用std::placeholders::_1 … std::placeholders::_n吧!
到此這篇關(guān)于C++中使用function和bind綁定類成員函數(shù)的方法詳解的文章就介紹到這了,更多相關(guān)C++ function和bind綁定類成員函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)詳細(xì)解析二叉樹的操作
二叉樹可以簡單理解為對于一個節(jié)點來說,最多擁有一個上級節(jié)點,同時最多具備左右兩個下級節(jié)點的數(shù)據(jù)結(jié)構(gòu)。本文將詳細(xì)介紹一下C++中二叉樹的實現(xiàn)和遍歷,需要的可以參考一下2022-04-04OpenMP task construct 實現(xiàn)原理及源碼示例解析
這篇文章主要為大家介紹了OpenMP task construct 實現(xiàn)原理及源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03