成員函式指標, 實現handler map

2021-05-24 15:06:12 字數 616 閱讀 6224

要實現handleevent功能,根據收到的event的不同型別派發到不同函式處理。

宣告如下:

class foo

public:

foo();

void handleevent(event *pevent);

private:

void handlea(event* pevent);

void handleb(event* pevent);

void handlec(event* pevent);

typedef void(foo::*eventhandler)(event*);

std::maphandlers;

實現:foo::foo()

handlers[atype]=&foo::handlea;

handlers[btype]=&foo::handleb;

handlers[ctype]=&foo::handlef;

void foo::handleevent(event *pevent)

eventhandler handler= handlers[pevent->gettype()];

(this->*handler)(pevent);

成員函式 虛函式 this指標

1 成員函式的實現機制和普通 全域性 函式沒有本質區別,對編譯器而言,經過名稱處理以後 在函式名前加上命名空間 類名 乙個成員函式就是普通函式了,在編譯後的 區域有確定的函式體和入口位址。最大的差別在於發生呼叫時,對於成員函式,編譯器會隱含語句push this,其中this指標指向物件的位址,這就...

成員函式指標表

函式指標和成員函式指標的乙個公共用途是,將它們儲存在函式表中。函式表是函式指標的集合,在執行時從中選擇給定呼叫。對具有幾個相同型別成員的類而言,可以使用這樣的表來從這些成員的集合中選擇乙個。假定擴充套件screen類以包含幾個成員函式,其中每乙個在特定方向移動游標 class screen 我們可能...

類成員函式指標

類成員函式指標 類的成員函式分為兩種,一種是靜態函式,另外一種是非靜態函式。例如 class x display 為靜態函式,getvalue即為非靜態函式。兩種函式在使用的時候是不一樣的。靜態函式可以直接由類名來呼叫,而非靜態函式則必須通過某乙個物件來呼叫,例如 x display x x x.g...