關於C 成員函式指標的使用

2022-03-12 08:40:06 字數 418 閱讀 6603

在做專案的時候,遇到了在類中根據不同的呼叫函式,在被呼叫函式的某處需要做不同的處理,本來就想著直接在類中設個標記變數判斷下就好了,不過覺得這樣**可能看起來會有些凌亂,而且效率估計有些低,於是想起來使用函式指標。去網上查了查函式指標的使用,可能由於都沒提成員函式指標到底為什麼特殊及如何使用,只給了些例程,因此怎麼呼叫都是不對。

為此我去查了下英文的資料,主要有msdn關於pointer-to-member operator的解釋:

和codeguru的教程:

原來,類成員指標是一種特殊的指標,它儲存的是指標所指向的成員變數或成員函式在類的物件中的相對位置,為此,在引用的時候必須使用「類成員指標操作符」(pointer-to-member operator)也就是 .* 和 ->*,並指定它所屬的類物件。原來對於類成員函式指標的引用有專門的操作符,這下子這個問題就解決了。

C 成員函式指標

c 成員函式分為靜態成員函式和普通成員函式,其中普通成員函式的實現中隱式包含了this指標作為其第乙個引數,所以導致兩者函式指標使用的差異,靜態成員函式指標與普通的外部函式指標使用基本一致,但普通成員函式指標型別的定義要包含類名的資訊 include class test static void p...

C 使用成員函式指標陣列的問題

最近開發的專案使用c 開發,需要大量使用message id來呼叫函式。討厭寫成switch cased的結構,就想像之前在c語言使用函式指標table的方法,來呼叫成員函式。之前使用c語言的話,還是比較方便的。但c 語言使用成員函式指標陣列就比較麻煩。除錯了一天,終於調通了。測試可以正常執行。下面...

C 中類成員函式指標的使用

include stdafx.h include class test test void testfunc protected private int mi typedef void test datafunc1 範例3,類外部的typedef函式宣告,不屬於test成員,宣告時不能加test宣告...