c++中的成員函式指標(member function pointer)提供了對類成員函式進行動態訪問的機制。比如定義如下的類:
class base
;那麼可以定義成員函式指標:
void (base::*mfp)() = &base::*basefunc;
並且通過下面的語句執行basefunc()函式:
base* baseobject = new base();
(baseobject->*mfp)();
稍微麻煩一點,我們也可以定義乙個base類的繼承類:
class inherited : public base
;毫無疑問我們可以像定義基類指標一樣定義繼承類的類成員函式指標,當然,我們也可以直接通過基類類成員函式指標來訪問子類的成員函式,只需要按照如下的方式轉換一下即可:
void (base::*mfp)() =
(void (base::*)())(
&inherited::inheritedfunc
);(如果不加轉換直接賦值的話,可能會出現類似如下的錯誤
cannot convert from inherited::* to base::*, conversion requires reinterpret_cast, c-style cast or function-style cast.
)
C 類成員函式指標
使用類成員函式指標需要掌握的三點。1 申明類成員函式指標 2 通過物件指標呼叫類函式指標 3 通過物件呼叫類函式指標 例 定義基類和子類 class base virtual void print2 class derived public base virtual void print2 申明類成...
C 類成員函式指標
include 自定義型別,包含兩種不同的成員函式 class mytest public mytest inta data a intget void set inta private int data 定義指向該 型別成員函式 的 函式指標 型別 注意格式!typedef int mytest ...
C 中類成員函式指標的使用
include stdafx.h include class test test void testfunc protected private int mi typedef void test datafunc1 範例3,類外部的typedef函式宣告,不屬於test成員,宣告時不能加test宣告...