成員函式指標在開發中的實際應用

2021-04-13 06:32:56 字數 1345 閱讀 5291

成員函式指標在開發中的實際應用

前幾天我的《成員函式指標》一文,主要介紹了類成員函式指標的使用方法,大家看了後認為意義不大,那是因為你可能還沒有真正在開發中遇到需要用成員函式指標的情況。這篇文章就作為《成員函式指標》一文補充,舉例說明在什麼情況下使用成員函式指標來簡化開發。

設想我們要實現乙個命令直譯器類,就是這個類包括了若干個命令,通常我們的實現方法如下:

class cmdprocess;

//根據傳入的命令名字和引數執行命令

int cmdprocess::execcmd(char *cmd,int argc,char*argv)

//根據傳入的命令名字獲取命令的幫助資訊

void cmdprocess::getcmdhelp(char *cmd,char* cmdhelp)

從上面可以看出,命令函式只是函式名不同,而引數和返回值相同,但是每次都要遍歷所有的命令,煩不煩?更要命的是要是新增加乙個命令,就需要修改所有的函式!假如你忘了修改乙個地方,嘿嘿,後果是什麼你也猜到了吧。

下面是用函式指標來實現相同的功能,可能看起來複雜一些,但要是遵循這個規則,使用起來還是比較簡單的。

class cmdprocess;};

_cmdinfo cmdinfolist[_cmdcount];

_cmdinfo * getcmdinfo(char *cmd);

private:

int cmd_login(int argc,char*argv);

int cmd_logout(int argc,char*argv);

int cmd_putfile(int argc,char*argv);

int cmd_getfile(int argc,char*argv);

int cmd_listfile(int argc,char*argv);

int cmd_delfile(int argc,char*argv);};

//初始化成員函式指標的值

cmdprocess::cmdprocess()

//根據命令字找命令

_cmdinfo * cmdprocess::getcmdinfo(char *cmd)

return null;}

//根據傳入的命令字和引數執行命令

int cmdprocess::execcmd(char *cmd,int argc,char*argv)

//根據傳入的命令字獲取命令幫助資訊

void cmdprocess::getcmdhelp(char *cmd,char* cmdhelp)

這種方式,當新增命令時,需要修改命令個數,和把相應命令新增到cmdinfolist就可以了。

多型在開發中實際的應用

多型在實際開發中的應用 1 分析 以主人餵養寵物這個場景要實現需要進行型別的抽象 主人 類 主人可以餵養寵物,所以主人有餵養的這個動作 寵物 類 寵物可以吃東西,所以寵物有吃東西這個動作 2 物件導向程式設計的核心 定義好類,然後將類例項化為物件,給乙個環境驅使一下,讓哥個物件之間寫作起來形成乙個系...

在成員函式中delete this指標

剛才在toplanguage上看到版主丟擲來的乙個問題,在成員函式中能不能delete this指標。我覺得是可以的,delete操作一般是先呼叫析構函式,再呼叫delete運算子。而且delete之後,該記憶體不會立刻被釋放,只是做個標記,告訴作業系統這塊記憶體可以被釋放掉了。至於系統什麼時候會釋...

Oracle 臨時表在實際開發中的應用

sql server 在編寫查詢式的儲存過程的時候,一直都令我為之讚嘆。create procedure ps procedure name as select from table select查詢語句可以作為sql server儲存過程的一部分,直接返回結果集。但在oracle實現這種形式的儲存...