C 靜態成員和非靜態成員的區別 及修飾

2021-07-30 13:26:20 字數 1183 閱讀 9585

1.資料成員可以分靜態變數、非靜態變數兩種.

靜態成員:靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名+靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員..因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜態的成員.靜態成員在每個類中只有乙個拷貝,是解決同乙個類的不同物件之間資料和函式共享問題的。

非成靜態員:所有沒有加static的成員都是非靜態成員,當類被例項化之後,可以通過例項化的類名進行訪問..非靜態成員的生存期決定於該類的生存期..而靜態成員則不存在生存期的概念,因為靜態成員始終駐留在內容中..

乙個類中也可以包含靜態成員和非靜態成員,類中也包括靜態建構函式和非靜態建構函式..

2.

靜態成員函式可以直接引用該類的靜態資料成員和靜態成員函式,但不能直接引用非靜態資料成員和非靜態成員函式,否則編譯報錯。如果要引用,必須通過引數傳遞的方式得到物件名,然後再通過物件名引用
[cpp]view plain

copy

print

?class a  

;  void a::f(a a)    

class a

;void a::f(a a)

;  myclass::myclass()  

int myclass::getn(myclass a)  

int myclass::n = 100;   // 靜態資料成員初始化

void    main()    

#includeusing namespace std;

class myclass

;myclass::myclass()

int myclass::getn(myclass a)

int myclass::n = 100; // 靜態資料成員初始化

void main()

那麼可以得出結論,靜態成員和非靜態成員區別如下:
1.訪問方式不一樣.靜態成員(通過類名.靜態成員名訪問).非靜態成員(通過物件名.非靜態成員名訪問)
2.靜態成員屬於類.該類的所有物件共同擁有這乙個成員.
非靜態成員屬於物件,每個物件都有乙份.靜態成員不論有類有多少個物件.只在記憶體中分配一塊空間.

靜態成員及非靜態成員 區別

靜態成員及非靜態成員解說 對於非靜態資料成員,每個類物件都有自己的拷貝。而靜態資料成員被當作是類的成員。無論這個類的物件被定義了多少個,靜態資料成員在程式中也只有乙份拷貝,由該型別的所有物件共享訪問。也就是說,靜態資料成員是該類的所有物件所共有的。對該類的多個物件來說,靜態資料成員只分配一次記憶體,...

靜態成員和非靜態成員的區別

靜態成員和非靜態成員的區別?答 靜態變數使用 static 修飾符進行宣告,在類被例項化時建立,通過類進行訪問不帶有 static 修飾符宣告的變數稱做非靜態變數,在物件被例項化時建立,通過物件進行訪問乙個類的所有例項的同一靜態變數都是同乙個值,同乙個類的不同例項的同一非靜態變數可以是不同的值。靜態...

C 靜態成員和非靜態成員

一 c 靜態成員和非靜態成員 1.c 靜態成員和非靜態成員 當類中的某個成員使用static修飾符時,就會被宣告為靜態成員。類中的成員要麼是靜態成員,要麼是非靜態成員。一般情況下,靜態成員屬於整個類所有,被該類的所有例項所共享。而非靜態成員則屬於類的例項 物件所有,只被該例項所共享。因此,對於類的靜...