C 使用成員函式指標的乙個例子

2021-08-23 13:22:22 字數 811 閱讀 6045

進行單元測試,要測試乙個類的功能,下面這個測試類一共有三部分功能測試,每種測試分別在乙個函式中完成,然後可以通過鍵盤輸入控制測試模組是否執行。開始**寫成這樣

class pendulumtest

;void pendulumtest::run( void )

感覺run函式的**太難看了,於是就使用成員函式指標改了一下:

struct testitem

;void pendulumtest::run( void )

, ,

, }; for(int i=0; tests[i].func != null; ++i)

}

修改後感覺漂亮多了。注意,「->*」操作符是通過成員函式指標呼叫成員函式的專用操作符,因為成員函式是依服於物件的,所以必須使用this指標呼叫,如果是靜態成員則不能使用成員函式指標進行呼叫,因為靜態成員函式跟普通全域性函式是一樣的,不需要依附於物件。當然使用物件的話就不用「->」而改用「.」操作符了,對應的語句改為

((*this).*tests[i].func)();

像這樣進行單元測試,還可以通過乙個配置檔案控制需要測試的內容,其實每一行乙個開關就可以,通過模組名稱可以不考慮順序例如配置檔案內容為:

discrete model test:off

inte***ce test:on

hardware test:on

只是對於現在這個工程不太合適,因為它要操作硬體,必須有人監控,否則可能由於程式錯誤造成硬體失控,從而損壞裝置,對於純軟體是再合適不過了。其實對於軟體做測試開關的用途就不大了,直接全部執行測試就可以了。

C 多型的乙個例子

class a virtual void f2 static void f3 virtual void f4 class b virtual void f2 static void f3 virtual void f4 int main 執行結果 a f1 b f1 a f3 b f2 分析 類的成...

乙個類成員函式指標的應用例子

在c 平靜的海面底下,隱藏著許許多多暗礁,而類成員函式指標絕對是其中最險惡的之一。所以如果不幸碰到它,那麼一定要打醒十二分精神,這是我的小小體會。下面來看看乙個簡單的例子。class base virtual base public typedef void base func void setf ...

C 虛函式與繼承的乙個例子

通過隱含的this指標,也可以實現執行時多型 include class a int getdata virtual int dogetdata class b public a int dogetdata class c public b int main 這裡列印的結果是1,呼叫的是b中的get...