當前位置:編程學習大全網 - 編程語言 - c++中什麽是靜態數據成員 什麽是靜態成員函數 分別有什麽作用?

c++中什麽是靜態數據成員 什麽是靜態成員函數 分別有什麽作用?

*** 我主要說的關鍵是“靜態成員是屬於類的”,而不屬於任何對象所有 ***

在此對壹些內容作詳細的解釋,其中小部分與樓上有點相同,但我說的關鍵處,與它不同,並修改壹些說法。

首先,我在這裏把樓主的“靜態成員”和“靜態方法”,分別對應下面的“靜態數據成員”和“靜態成員函數”。並把他們都成為靜態成員。(它們實際是同壹個概念的不同說法。)

“靜態成員是屬於類的,由該類的全體對象***享”------就是對是這樣的

“無論妳建立了多少個該類的對象,靜態成員在內存上只有壹個”------我要說的是,無論妳建多少個該類的對象,所有成員函數在內存上也只有壹個

為什麽說靜態成員是屬於類的呢

因為,

我們假設 class A };並定義對象 A abc;

壹般的引用類的成員的方法是通過對象去引用:abc.i; abc.display;。

但可以通過類 A::i來引用i , 通過A::display()來引用display(). 《這裏是要特別要註意的!!!》

而普通成員就不行,

雖然不管是靜態成員還是普通成員,在內存裏只有壹個副本。但從這個角度去看,靜態成員是屬於類的。

對於靜態成員函數,我們也許還分不清楚這個問題,但是,

特別是對於靜態數據成員,我們就很容易理解了。

如果不定義為靜態數據成員,那麽每個對象都分別有壹個i的副本(拷貝)。但定義為靜態數據成員之後,所有的對象***享有壹個i的副本,就是說i在內存裏就壹個副本。

那麽,不同對象引用i,對i的改變的話, 其他對象中i的值也會被改變,而且所有對象的值都是相同的。

在引用靜態數據成員時,可以不通過對象而通過類,靜態數據成員在內存只有壹個,而且可以通過類來引用。這是靜態數據成員屬於類,很明顯的。

這是實現不同對象間數據***享的壹種方法。

靜態成員函數,與靜態數據成員類似。就不說,需要註意的是,它在內存裏始終只有壹個副本(普通成員函數也壹樣)。

關於靜態成員的生命周期,在此就不多說了。

  • 上一篇:高中計算機會考涉及哪些內容?
  • 下一篇:中國編程小說
  • copyright 2024編程學習大全網