指向非靜態成員函式的3種方式

2021-07-23 18:50:36 字數 512 閱讀 7514

point a(1,2);

a中有個show函式

1.a.show()//物件呼叫

2.指標呼叫

point* p=&a;

(*p).show()//或者p->show()  *p要加括號 優先順序問題

3.成員函式指標

int (point::*q)()=point::show;//相當於在類中加乙個指標

(a.*q)()

通過指標訪問類的靜態成員

class a

int a::p=0;//靜態成員要定義

int *q=&a::p;

初始化時:

指標指向函式

型別 (類名::指標名)(引數)=類名::函式名

指標指向資料

型別 類名::指標名=&類名::資料名

呼叫時:

指標指向函式

(物件名.*指標名)(引數)

或者(物件名->*指標名)(引數)

指標指向資料

物件名.*指標名

靜態成員函式和非靜態成員函式的區別?

乙個靜態成員函式不與任何物件相聯絡,故不能對非靜態成員進行預設訪問。它們的根本區別在於靜態成員函式沒有this指標,而非靜態成員函式有乙個指向當前物件的指標this。例如 1 classsc2 89void f sc s 10函式nsfn 可被認為它宣告為void sc nsfn sc this i...

靜態成員函式與非靜態成員函式的區別

先放上幾個小例子 1 static 修飾成員變數 靜態變數,是在編譯階段就分配空間,物件還沒有建立時,就已經分配空間。靜態成員變數必須在類中宣告,在類外定義。靜態資料成員不屬於某個物件,在為物件分配空間中不包括靜態成員所佔空間。class data 定義的時候 不需要加static int data...

靜態成員函式和非靜態成員函式的區別?

乙個靜態成員函式不與任何物件相聯絡,故不能對非靜態成員進行預設訪問。它們的根本區別在於靜態成員函式沒有this指標,而非靜態成員函式有乙個指向當前物件的指標this。例如 1 classsc2 89void f sc s 10 函式nsfn 可被認為它宣告為void sc nsfn sc this ...