類成員指標一般很少用到,使用類成員的指標與普通指標的區別在於,需要在類成員指標前面的加上類限定符,以指明是哪個類的成員指標。同樣,在初始化指標時,也只能用相應類的相應型別的成員對指標進行初始化。
成員指標的應用舉例
當乙個類有多個性質相同且型別相同的函式成員時,可以使用函式表來進行函式呼叫,產生用同一函式使用不同引數來達到不同操作的效果,而實際上是呼叫了不同的函式來實現的。下面給出這樣的乙個例子,方便讀者有乙個感性的認識:
#
include
<
iostream
>
using
namespace
std;
class screen
screen& forward(
)screen& back(
)screen& up(
)screen& down(
)// function table
typedef screen&
(screen:
:*action)()
;static action menu;
// specify which direction to move
enum directions
;screen& move(directions);}
;screen:
:action screen:
:menu=
;screen& screen:
:move(directions dirc)
int main(
)
上面例子表明了類成員函式指標比較有優勢的地方,可以擴充套件到用map代替上面的陣列,實現高效的字串和函式的繫結~~
另外由於類成員函式指標匹配條件非常嚴格,所以不建議用在比如執行緒入口函式等地方,往往會報不少錯誤。當然,如果符合下面三個條件也可以消除編譯錯誤。
函式成員的指標與普通函式指標相比,也多了類限定符。由於類成員函式還有可能是const,所以const也成為成員函式指標宣告的一部分。也就是說,函式成員的指標必須在三個方面與它所指函式的型別相匹配:
(1)函式形參的型別和數目;
(2)返回型別及是否為const函式;
(3)所屬類的型別。
類成員指標
看到深度探索c 物件模型3.2節,其中給出了乙個判斷access section出現先後順序的模板函式如下 templatechar access order data type1 class type mem1,data type2 class type mem2 用以下程式測試 class po...
類成員指標
首先 函式指標是指向一組同型別的函式的指標 而類成員函式我們也可以相似的認為,它是指向同類中同一組型別的成員函式的指標,當然這裡的成員函式更準確的講應該是指非靜態的成員函式。前者是直接指向函式位址的,而後者我們從字面上也可以知道 它肯定是跟類和物件有著關係的。typedef int p int,in...
類成員指標
看到深度探索c 物件模型3.2節,其中給出了乙個判斷access section出現先後順序的模板函式如下 templatechar access order data type1 class type mem1,data type2 class type mem2 用以下程式測試 class po...