C 類成員函式指標陣列應用 一

2021-10-01 14:47:57 字數 1326 閱讀 7501

閱讀本文之前你需要明確知道函式指標和普通函式的區別,對這兩者本文不做過多說明

使用函式指標陣列建立一套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...