要實現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...