爲什麼我們不能爲不同的對象使用不同的靜態變量副本?爲什麼一個類的靜態成員對於所有對象都是相同的?
4
A
回答
5
因爲他們會是instance members那麼。
static members的主要特點是它們被類的所有實例共享。
4
靜態成員不與特定實例關聯。
如果你想爲每個實例使用不同的成員值,你應該使用實例成員(刪除static關鍵字)。
3
它的定義是一個靜態對象是由該類的所有實例共享的靜態對象。普通會員沒有這個屬性。
3
這就是static
的定義 - 數據的一個副本存在。它是單獨存儲的,最有可能與庫或應用程序的所有其他靜態數據一起存儲。
-1
由於類靜態成員是分開存儲在BSS部分,所以每個類的每個實例具有相同的值。
1
因爲這就是static
在這種情況下的含義。
5
由於從C++標準(2003)的部分9.4.2 $/1說,
靜態數據成員不是 的一類的子對象的一部分。有 只有 類的所有對象共享的靜態數據成員 的一個副本。
既然標準決定了C++是什麼,那麼什麼不是,所以這就是C++的設計!
靜態成員更像全局對象。相同的副本屬於所有對象!
看到這個職位的詳細回答:Do static members of a class occupy memory if no object of that class is created?
相關問題
- 1. 帶有靜態成員的C++模板類 - 對所有類的類都是相同的
- 2. 在類中使用靜態成員對象有什麼問題?
- 3. 爲什麼一個類允許自己擁有一個靜態成員,但不是一個非靜態成員?
- 4. 爲什麼echo $ Java_HOME對於所有用戶都不相同
- 5. 爲什麼靜態數據成員不是C++中對象的一部分?
- 6. 對於每個繼承類類型,繼承的靜態成員是不同的?
- 7. 類中的同一類的靜態對象與其數據成員的用法是什麼?
- 8. 對於Java中的不同類型,泛型類的靜態成員是否有所不同?
- 9. 對靜態成員有一個未定義的引用是什麼意思?
- 10. 測試,如果所有對象都具有相同的成員值
- 11. 爲什麼靜態類只能有靜態成員?
- 12. 爲什麼java中的每個類都是對象的子類?
- 13. 爲什麼靜態數據成員不能與非靜態數據成員具有相同的名稱?
- 14. 對象靜態成員的初始化
- 15. 更改靜態成員對象的值
- 16. C++靜態對象中的類的靜態數據成員和靜態方法?
- 17. 爲什麼這兩個顯然相同的對象有不同的類類型?
- 18. 爲什麼只有Java中的靜態內部類具有靜態成員?
- 19. 將一個類的所有成員複製到當前對象
- 20. 爲什麼.Net WPF DependencyProperties必須是類的靜態成員
- 21. 所有對象成員
- 22. 爲什麼不能所有的方法和類變量都是靜態的?
- 23. 類的另一個對象的行爲有所不同,JavaSource_Calendar類
- 24. 同步:爲什麼首選鎖定私人最後靜態對象,而不是類的類對象?
- 25. 在類對象中創建靜態成員併爲特定函數調用該成員是一個好主意
- 26. 蟒蛇:問題類對象的列表:所有項目都是相同的
- 27. 對象引用用於非靜態字段相同類
- 28. 爲什麼靜態成員函數需要根據§13.3.1/ 4有一個隱含的對象參數?
- 29. 是否所有團隊成員都使用相同的IDE?
- 30. arraylist中的所有對象都具有相同的值
哦,真的,過來吧。 2降價?僅僅因爲他們不明白「靜態」意味着什麼的重要概念(還)?有可能更多的人犯了這個錯誤,特別是在他們早期的編程日。爲什麼這個問題比這個問題不那麼明確或者有用,比如說:「爲什麼隨機不是那麼隨機?」(它可能同樣被歸類爲「常識」)?我記得前段時間常見問題解答說,即使是初學者的問題也歡迎在這裏。 – Joey 2011-01-30 09:26:31
@Joey:我同意,沒有任何問題僅僅因爲它表現出無知而應該得到冷落。我們都需要從某個地方開始,而這個問題雖然簡潔,寫得很好,並且直接指向了這一點。 – 2011-01-30 14:23:31