Thinkcpp 學習筆記 c11 成員函式指標

2021-06-28 12:07:53 字數 1134 閱讀 9757

指向函式的指標定義:

int (*fp) (float);

(*fp) 的圓括號使得編譯器正確判斷定義,沒有圓括號,這個表示式就是乙個返回 int *的函式  int * fp (float)

同樣,成員函式指標也需要圓括號:

class simpe

};int (******::*fp)(float) const;

int (******::*fp2)(float)const = &******::f;

int main()

成員指標可以在建立或者其他時候被初始化。

成員函式指標的呼叫必須用   .* 或者 ->*  的方式。類似  int re = fp(9.0) 是不允許的。必須是 :  int re = (psobj->*fp)(9.0)  注意:這裡的括號是必須的。

1 #include 2 using namespace std;

3 4 class widget

7 void g(int)const

8 void h(int)const

9 };

10 11 int main()

上面是乙個動態改變指標內容的例子。

為了更加簡化使用者使用,可以使用成員指標作為內部執行機制的一部分

1 #include 2 using namespace std;

3 class widget

5 void g(int)const

6 void h(int)const

7 enum;

8 void (widget::*fptr[cnt])(int) const;

9 public:

10 widget()

16 void select(int i,int arg)

20 int count()

21 };

22 23 int main(){

24 widget w;

25 for(int i=0;i總結:

c 11學習筆記

c 98的 std auto ptr已經被徹底遺棄了,取而代之的是unique ptr shared ptr與weak ptr。大部分時候我們自己手動申請記憶體方式記憶體都是沒有問題的,問題是如果程式很大了之後,乙個複雜的物件,多次拷貝的代價非常高,很多地方都會使用到,只存在乙份拷貝顯然是最好的,這...

C 11學習筆記 Type Support

其實主要還是對c 的std庫的學習吧,雖然用的不少但是對c 的全貌還不太了解。主要包括3個部分 基本型別 rtti 萃取技術 traits size t 用的太多了,不說了。ptrdiff t 乙個有符號的型別,通常用來表示兩個指標相減的結果,是乙個機器相關的型別。和size t不同的是,size ...

C 11學習筆記 五

指標空值 nullptr include using namespace std void f char c void f int i int main 本程式中,null被定義為0,這裡引發錯誤的原因是 c 98中,0既可以是乙個整形,也可以是乙個 void 指標。如果想要呼叫f char c 版...