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

2021-08-17 03:40:04 字數 1292 閱讀 8743

物件的成員是要占用儲存空間的,因此物件也是有指標的,因為c++非常強調型別安全和編譯時檢查,因此c++的指標一共被分為4類,而且之間不能隨便轉換

資料指標

函式指標

資料成員指標

成員函式指標

資料指標

和函式指標

是普通指標,c語言裡也有,而後面的兩種,資料成員指標

和成員函式指標

被稱為成員指標,是c所沒有而c++才有的。

成員指標是指向類的某乙個成員的指標,它的型別與類的型別成員的型別有關,它只應用於類的非靜態成員。(類的靜態成員是為類所有,不屬於任何物件,所以靜態成員指標用的是普通指標。)

下面是成員指標的定義方式:

舉個例子:string data::*ptr_x=&data::x;(其中x是類data的資料成員,而這個資料成員是string型別的。)

2.定義成員函式指標的一般形式為:

注意:定義成員函式指標時,必須確保在3個方面與它所指向的函式的型別相匹配

函式形參的型別和數目,包括成員是否為const(是否是常成員函式);

返回型別;所屬類的型別。

舉栗子:「char get() const」成員函式的指標可以這樣定義和初始化:

typedef char ( data::*getfunc ) ( data::index, data::index ) const;  //data::是類限定,index對應的函式引數的型別

getfuncptr_func= &data::get;

說了資料成員指標和成員函式指標的定義方式,那麼怎麼使用呢?其實和普通指標的使用方式沒啥區別,下面來看一段**:

或許有同學會問,囉裡囉嗦講了這麼多成員指標的知識,那麼什麼情況會用到成員指標呢?目前為止我還沒找到特別合理的該用成員指標的地方,下面貼一張和大佬的聊天圖....

下面是乙個很好消化的栗子:

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

成員函式指標是相對於物件來說的,在說成員函式指標之前,先要明白普通函式指標的定義與使用。用vs先建立乙個專案,名稱隨意,然後在原始檔中宣告並且定義乙個函式,如下 include pch.h include using namespace std int add int a,int b int mai...

map與成員函式指標的使用

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

善用指標 指標定義與使用

1.在定義指標變數時必須指定基型別 因為不同的型別在計算機中占用的位元組數,儲存方式都是不一樣的。例如 使指標移動乙個位置,或使指標值加1,這個1代表什麼呢?如果指標是指向乙個整型變數的,那麼 使指標移動乙個位置 意味著移動4位元組 使指標加1 意味著使位址值加4個位元組。如果使用的是乙個雙精度型的...