閱讀本文之前你需要明確知道函式指標和普通函式的區別,對這兩者本文不做過多說明
使用函式指標陣列建立一套bpm工作流框架。這套框架在各種oa以及某幾個大型通訊公司應用的很廣泛
多分枝(類似swtich)條件下、處理函式的形參列表和返回型別相同。如:
int func1(const char *pszcontent);
int func2(const char *pszcontent);
...int funcn(const char *pszcontent);
void processmsg(int imsgtype, const char *pszcontent)
對於上述場景,我們可以採用函式指標陣列的方式處理,如下:
typedef int (*pfunc)(const char*); //建立函式指標
pfunc arrfuncpoint[n+1]; //建立函式指標陣列
//初始化指標陣列
void init()
//呼叫函式
char szcontent[""] = "helloworld";
arrfuncpoint[iindex](szcontent);
有時候為了**復用,比如計算器程式,我們把這些函式封裝到乙個類中,作為類的成員函式。現在場景就從普通函式公升級為類的成員函式指標陣列。如下:
class cfunction
void func2(int inum)
private:
//特別注意定義成類的作用域,後面講原因
//typedef void (cfunction::*pfunc)(int);
//pfunc m_arrfunc[2];
//效果等同上述兩條語句
void (cfunction::*pfunc[2])(int); }
cfunction::cfunction()
void cfunction::testfunc(int ipos, int inum)
那為什麼定義函式指標陣列時要明確指出類的作用域呢?
因為對於非static的成員函式,函式的真正原型並不是你所看到的那樣。比如上面宣告了void func1(int inum),其實真正的原型是形參列表前面有個this指標,也就是void func1(this, int inum);所以在建立函式指標時要按結構來。但是對於普通的函式和static函式並不用給出作用類,因為函式形參中並沒有this指標,故能省略掉類作用域。
c++類成員函式指標陣列應用(二)
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 函式指標和類成員函式指標
一 函式指標 基本形式 char fun int n char pfun int void main 二 函式指標 typedef形式 char fun int n typedef char pfun int pfun pfun void main 三 類成員函式指標 class base type...