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指定角度範圍搜...