Boost Function的基本使用

2021-04-25 08:52:35 字數 1498 閱讀 8973

boost.function的基本使用

boost.function庫用來提供乙個物件化的函式指標。

函式指標對設計很有用。它使呼叫者可以延期呼叫,呼叫時機由呼叫者確定。而且可以改變

響應者,以應對不同的要求。

c中的函式指標只能用於自由函式。在c++中除了自由函式還有函式物件和類成員函式,這些

c的函式指標是無法用的。這要求能適應c++語言的函式指標。既然c++語言本身沒有提供,

那就提供乙個庫。stl提供了,但是定義了很多態別,使用起來並不是很方便,而且函式引數

的個數被限定在兩個以下,更能是備受限制。boost.function庫提供了乙個好的解決方案。

boost.function庫可以支援自由函式,函式物件,類成員函式。而且引數個數多達10個。

boost.function庫利用模板技術來實現。生成的**有很高的執行效率。本庫可以不用編譯

直接使用。

boost.function的標頭檔案。

function.hpp

定義乙個boost.function的物件(是乙個返回值型別為int,第乙個引數是std::string型別

第二個引數是float類新)

boost::function< int ( std::string, float ) > funptr;

上面這個定義方式是一種容易理解的定義方式。但有些編譯器不支援,如果想更多的編譯器

支援,則用下面這種定義方式

boost::function2< int, std::string, float > funptr;

注意模板中有3個型別,而function類卻是boost::function2。應為返回值型別不計算在引數

型別中(原因很簡單,c++的編譯器不會根據返回型別不同來區分函式定義的不同)。

int freefun( std::string str, float f )

class cfun

}上面定義了乙個自由函式和乙個函式物件。下面將把他們付給function物件。

賦值為自由函式

funptr = &freefun;

賦值為函式物件

cfun fun;

funptr = fun;

以上兩種情況的呼叫方法一致,如下

funptr( "float =", 10.0 );

boost.function物件要能指向型別原函式,其定義要如下

class freeclass

};boost::function< int ( freeclass*, std::string, float ) > funptr;

跨平台的定義方法

boost::function3< int, freeclass*, std::string, float > funptr;

賦值方法

funptr = &freeclass::out;

呼叫方法

freeclass fc;

funptr( &fc, "float =", 10.0 );

boost function用法詳解

要開始使用 boost.function,就要包含標頭檔案 boost function.hpp 或者某個帶數字的版本,從 boost function function0.hpp 到 boost function function10.hpp 如果你知道你想儲存在 function 中的函式的引數...

封基和開基的異同

封閉式 簡稱 封基 學名叫 契約型封閉式 開放式 簡稱 開基 學名叫 契約型開放式 相同點大致有 一 都是 管理公司的集合理財產品 二 都屬於面向社會公開募集 的範疇 三 都要執行 法 和規範的會計準則 四 都要按照資產淨值提取管理費 託管費 五 目前 分紅都不需要交納個人所得稅 歡迎補充 不同點有...

Shape Basedmatching的基本流程

1 確定出roi的矩形區域 2 從roi區域提取出影象 可以先進行影象處理 3 建立模板 create shape model 金字塔級數 由numlevels 指定 值越大則 找到物體的時間 越少 anglestart 和angleextent 決定可能的旋轉範圍,anglestep指定角度範圍搜...