先放上幾個小例子
1、static 修飾成員變數
靜態變數,是在編譯階段就分配空間,物件還沒有建立時,就已經分配空間。
靜態成員變數必須在類中宣告,在類外定義。
靜態資料成員不屬於某個物件,在為物件分配空間中不包括靜態成員所佔空間。
class data
;//定義的時候 不需要加static
int data::data=100;//類外定義+初始化
void test01()
};//定義的時候 不需要加static
int data::data=100;//類外定義+初始化
void test01()
//靜態成員函式 屬於類 而不屬於物件
static int getdatastatic(void)
};//定義的時候 不需要加static
int data::data=100;//類外定義+初始化
void test01()
{ //cout《注意:
1、靜態成員函式的目的 操作靜態成員資料。
2、靜態成員函式 不能訪問 非靜態成員資料。(靜態成員函式內部沒有this指標)
3、普通成員函式 可以操作 靜態成員資料 非靜態成員資料。
4、靜態成員變數 和 靜態成員函式 都有許可權之分。
成員函式:無論靜態函式還是非靜態函式,
都是屬於類的(這一點與資料成員的靜態非靜態不同),
物件並不擁有函式的拷貝.
兩者的區別在於:
非靜態的函式由類物件(加.或指標加->;)呼叫,
這時將向函式傳遞this指標.而靜態函式由類名(:?(或物件名.)呼叫,
但靜態函式不傳遞this指標,不識別物件個體,
所以通常用來對類的靜態資料成員操作.
類的靜態成員(變數和方法)屬於類本身,
在類載入的時候就會分配記憶體,
可以通過類名直接去訪問;
非靜態成員(變數和方法)屬於類的物件,
所以只有在類的物件產生(建立類的例項)時才會分配記憶體,
然後通過類的物件(例項)去訪問。
靜態成員函式和非靜態成員函式的區別?
乙個靜態成員函式不與任何物件相聯絡,故不能對非靜態成員進行預設訪問。它們的根本區別在於靜態成員函式沒有this指標,而非靜態成員函式有乙個指向當前物件的指標this。例如 1 classsc2 89void f sc s 10函式nsfn 可被認為它宣告為void sc nsfn sc this i...
靜態成員函式和非靜態成員函式的區別?
乙個靜態成員函式不與任何物件相聯絡,故不能對非靜態成員進行預設訪問。它們的根本區別在於靜態成員函式沒有this指標,而非靜態成員函式有乙個指向當前物件的指標this。例如 1 classsc2 89void f sc s 10 函式nsfn 可被認為它宣告為void sc nsfn sc this ...
C 靜態成員函式訪問非靜態成員
如果類沒有被建立,則沒有對應的成員,也就無法訪問 下面這種方法需要先建立類,並將類作為引數傳遞給靜態成員函式才能訪問。include using namespace std class person class student public person static void get age st...