bind( )介面卡(Adapter) -- 呼叫全域性函式及成員函式

發表於2017-01-03

呼叫全域性函式

呼叫全域性函式程式例項:

執行結果:

“Nation” is part of”Internationalization”
請按任意鍵繼續. . .

程式分析:

本例採用search()演算法檢驗sub是否為s的一個子字串,大小寫不計。有了以下:

便是建立一個function object 並相當於呼叫:

注意:

bind( )內部會複製被傳入的實參。

若要改變這種行為,讓function object使用一個引用(reference)指向被傳入的實參,可利用ref()或cref():

例如:

呼叫成員函式

以下程式示範bind()如何被用來呼叫成員函式

程式分析:

程式中的bind(&Person::print, _1)定義一個function object,其內針對傳入的Person呼叫param1.print(),

也就是說,由於第一實參是個成員函式,下一個引數將定義“用以呼叫成員函式”的物件。

其他任何實參都會被傳遞給該成員函式。這意味著:

定義出一個function object,其內針對傳入Person呼叫param1.print2("Person:")

Lambda實現呼叫全域性函式及類成員函式

相關文章