1. 程式人生 > 程式設計 >C++中使用function和bind繫結類成員函式的方法詳解

C++中使用function和bind繫結類成員函式的方法詳解

定義一個普通的類

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傳進去的4並沒有什麼用,在bind的時候值已經繫結死了,但是pf()這樣不給引數會報錯。

在這裡插入圖片描述

如果我們想自定義引數,使用佔位符,std::placeholders::_1,可以看下圖,輸出的值是4了

int main(){
	Test1 t;
	function<void(int)> pf = std::bind(&Test1::fun,std::placeholders::_1);
	pf(4); 
	return 0;
}

在這裡插入圖片描述

使用C++11新特性lambda表示式,注意[]要有一個&,這個意思是指可修改當前作用域的變數。不過這樣頁會是邦死狀態

int main(){
	Test1 t;
	function<void(int)> pf = [&](int val){t.fun(2);};
	pf(4); 
	return 0;
}

所以宗上所述,如果想自定義值的話,還是使用std::placeholders::_1 … std::placeholders::_n吧!

到此這篇關於C++中使用function和bind繫結類成員函式的方法詳解的文章就介紹到這了,更多相關C++ function和bind繫結類成員函式內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!