![](/img/trans.png)
[英]How are static objects, that are members of a class and that are of the same type as the class they are in, initialized?
[英]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.