C++中使用function和bind綁定類(lèi)成員函數(shù)的方法詳解
定義一個(gè)普通的類(lèi)
class Test1{
public:
void fun(int val){
cout<<"hello world "<<val<<endl;
}
};
開(kāi)始第一個(gè)測(cè)試
int main(){
Test1 t;
function<void(int)> pf = std::bind(&Test1::fun,t,2);
pf(4); //
return 0;
}
輸出的值是2,說(shuō)明pf傳進(jìn)去的4并沒(méi)有什么用,在bind的時(shí)候值已經(jīng)綁定死了,但是pf()這樣不給參數(shù)會(huì)報(bào)錯(cuò)。

如果我們想自定義參數(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á)式,注意[]要有一個(gè)&,這個(gè)意思是指可修改當(dāng)前作用域的變量。不過(guò)這樣頁(yè)會(huì)是邦死狀態(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綁定類(lèi)成員函數(shù)的方法詳解的文章就介紹到這了,更多相關(guān)C++ function和bind綁定類(lèi)成員函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)詳細(xì)解析二叉樹(shù)的操作
二叉樹(shù)可以簡(jiǎn)單理解為對(duì)于一個(gè)節(jié)點(diǎn)來(lái)說(shuō),最多擁有一個(gè)上級(jí)節(jié)點(diǎn),同時(shí)最多具備左右兩個(gè)下級(jí)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。本文將詳細(xì)介紹一下C++中二叉樹(shù)的實(shí)現(xiàn)和遍歷,需要的可以參考一下2022-04-04
OpenMP task construct 實(shí)現(xiàn)原理及源碼示例解析
這篇文章主要為大家介紹了OpenMP task construct 實(shí)現(xiàn)原理及源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
詳細(xì)解析C語(yǔ)言中的開(kāi)方實(shí)現(xiàn)
這篇文章主要介紹了詳細(xì)解析C語(yǔ)言中的開(kāi)方實(shí)現(xiàn),包括一道要求精度的整數(shù)開(kāi)方的題目,需要的朋友可以參考下2015-08-08
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單猜數(shù)字小游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單猜數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
簡(jiǎn)單說(shuō)說(shuō)STL的內(nèi)存管理
<STL 源碼剖析>將其描述為空間配置器,理由是allocator可以將其它存儲(chǔ)介質(zhì)(例如硬盤(pán))做為stl 容器的存儲(chǔ)空間。由于內(nèi)存是allocator管理的主要部分,因此,本文以STL內(nèi)存管理為出發(fā)點(diǎn)介紹allocator2013-09-09

