1.資料成員可以分靜態變數、非靜態變數兩種.
靜態成員:靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名+靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員..因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜態的成員.靜態成員在每個類中只有乙個拷貝,是解決同乙個類的不同物件之間資料和函式共享問題的。
非成靜態員:所有沒有加static的成員都是非靜態成員,當類被例項化之後,可以通過例項化的類名進行訪問..非靜態成員的生存期決定於該類的生存期..而靜態成員則不存在生存期的概念,因為靜態成員始終駐留在內容中..
乙個類中也可以包含靜態成員和非靜態成員,類中也包括靜態建構函式和非靜態建構函式..
2.
靜態成員函式可以直接引用該類的靜態資料成員和靜態成員函式,但不能直接引用非靜態資料成員和非靜態成員函式,否則編譯報錯。如果要引用,必須通過引數傳遞的方式得到物件名,然後再通過物件名引用[cpp]view plain
copy
?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修飾符時,就會被宣告為靜態成員。類中的成員要麼是靜態成員,要麼是非靜態成員。一般情況下,靜態成員屬於整個類所有,被該類的所有例項所共享。而非靜態成員則屬於類的例項 物件所有,只被該例項所共享。因此,對於類的靜...