指向函式的指標定義:
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 版...