c++中,所謂普通成員函式,無非就是比普通函式在形參列表的最後,多了乙個這個型別的this指標,本質上和一般的函式沒有什麼不同。而類的靜態成員函式,則和普通函式完全一樣。
所以宣告函式指標時,對於類的靜態成員函式,方法和普通函式指標是一樣的。
對於普通成員函式,則有一點區別。受this指標的影響,類的非靜態成員函式與一般函式指標是不相容的。而且,不同類的this指標是不一樣的,因此,指向不同類的非靜態成員函式的指標也是不相容的。指向類的非靜態成員函式的指標,在宣告時就需要新增類名。
同時,還要注意一點,就是通過指標呼叫成員函式,無法使用預設引數。
通過下例也可以看出,乙個指標只能指向乙個特定的過載函式,而不能指向其他的版本。這是由宣告時候的指標 形參所確定好了的。
#include using std::cout;
using std::endl;
class my;
void (*pfunc)(int);
typedef void(my::*pfuncd)(int);
typedef void(my::*pfuncd2)(int,int);
class my
void showmedynamic(int inum = 10)
void showmedynamic(int inum,int dnum)
};int main()
提煉一下,用法如下:
typedef void(my::*pfuncd)(int);
pfuncd myfunc = &my::showmedynamic;
(myobj.*myfunc)(14);
指向成員函式的指標
指向成員函式的指標 取乙個非靜態成員函式的位址,如果該函式是nonvirtual,則得到的結果是它在記憶體中真正的位址。然而這個值也不是完全的,它也需要被繫結於某個class object的位址上,才能夠通過它呼叫該函式。所有的非靜態成員函式都需要物件的位址 以引數this指出 乙個指向成員函式的指...
指向成員函式的指標
c 中,成員指標是最為複雜的語法結構。但在事件驅動和多執行緒應用中被廣泛用於呼叫回叫函式。在多執行緒應用中,每個執行緒都通過指向成員函式的指標來呼叫該函式。在這樣的應用中,如果不用成員指標,程式設計是非常困難的。剛遇到這種語法時也許會讓你止步不前。但你會發現,使用恰當的型別定義之後,複雜的語法是可以...
函式指標 指向 類成員
在程式設計工作中常會遇到在乙個 類 中通過函式指標呼叫成員函式的要求,如,當在乙個類中使用了c 標準庫中的排序函式qsort時,因qsort引數需要乙個 比較函式 指標,如果這個 類 使用某個成員函式作 比較函式 就需要將這個成員函式的指標傳給qsort供其呼叫。本文所討論的用指標呼叫 類 的成員函...