簡體   English   中英

為什么所有對象的類的靜態成員都相同?

[英]Why are the static members of a class the same for all objects?

為什么我們不為不同的對象提供不同的靜態變量副本?

因為他們將成為實例成員

靜態成員的主要特征是它們由類的所有實例共享。

因為C ++標准(2003)中的$ 9.4.2 / 1部分說,

靜態數據成員不是類的子對象的一部分。 該類的所有對象共享的靜態數據成員只有一個副本。

既然標准單獨決定了什么是C ++,那么C ++就是如何設計的!

靜態成員更像是全局對象。 同一副本屬於所有對象!

有關詳細解答,請參閱此文章: 如果沒有創建該類的對象,則類的靜態成員是否占用內存?

靜態成員與特定實例無關。

如果您想為每個實例使用不同的成員值,則應使用實例成員(刪除static關鍵字)。

根據定義,靜態對象是由類的所有實例共享的對象。 普通會員沒有這個屬性。

這就是static的定義 - 存在一個數據副本。 它是單獨存儲的,很可能與庫或應用程序的所有其他靜態數據一起存儲。

因為這就是static意味着在這種情況下。

因為類靜態成員分別存儲在BSS部分中,所以類的每個實例都具有相同的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM