C 成員函式指標的定義與使用

2021-09-28 21:56:02 字數 1308 閱讀 1917

成員函式指標是相對於物件來說的,在說成員函式指標之前,先要明白普通函式指標的定義與使用。

用vs先建立乙個專案,名稱隨意,然後在原始檔中宣告並且定義乙個函式,**如下:

#include "pch.h"

#include using namespace std;

int add(int a,int b)

int main()

可以看到定義的乙個求和函式

int

add(

int a,

int b)

;

然後再入口函式main裡面定義乙個指向此函式的函式指標。

int

(*fp)

(int

,int);

fp=add;

cout<10,11)

<你也可以這樣定義函式指標

#include

"pch.h"

#include

using

namespace std;

intadd

(int a,

int b)

intmain()

首先用typedef關鍵字定義乙個函式指標型別,然後初始化乙個此型別的變數,並將add函式的位址賦值給它,然後呼叫列印。效果是一樣的。

說完了普通函式指標,我們再說下成員函式指標。

#include

"pch.h"

#include

using

namespace std;

class

man;

void man::

speak()

intmain()

這裡我們先定義乙個類,接著在類裡面宣告乙個方法speak並且實現它(這裡我在類的外部實現了,也可以在類內部直接實現)然後,定義乙個類裡面的成員函式指標,void(man::*p)();這一句定義成員函式指標需要注意必須要明月是在那個類裡面的函式,然後void 表示指向的函式的返回型別,後面()表示形參列表不需要傳參,然後把man::speak函式位址賦值給p,然後再呼叫,注意這裡必須要有乙個類的例項才能呼叫此函式指標。而且格式為

(*man.*p)()後面()表示執行函式的意思。

如果宣告的是man指標,也可以這樣呼叫

int

main()

注:由於解引用的優先順序大於成員選擇優先順序(* 大於.*)所以不用小括號。

C 的成員指標定義方式與使用

物件的成員是要占用儲存空間的,因此物件也是有指標的,因為c 非常強調型別安全和編譯時檢查,因此c 的指標一共被分為4類,而且之間不能隨便轉換 資料指標 函式指標 資料成員指標 成員函式指標 資料指標 和函式指標 是普通指標,c語言裡也有,而後面的兩種,資料成員指標 和成員函式指標 被稱為成員指標,是...

map與成員函式指標的使用

c 新加三種運算子支援成員函式指標 在使用成員函式指標時必須用物件去呼叫,否則編譯錯誤。1,成員函式指標的宣告與定義,如 class xx 2,成員函式指標的使用,如 auto ite m funprocmap.find command if ite m funprocmap.end 3,c 例子,...

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

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