Почему у нас нет разных копий статических переменных для разных объектов?Почему статические члены класса одинаковы для всех объектов?
ответ
Потому что они были бы instance members, то.
Основная характеристика static members заключается в том, что они разделяются всеми экземплярами класса.
Статический член не связан с конкретным экземпляром.
Если вам нужны разные значения члена для каждого экземпляра, вы должны использовать экземпляр участников (удалите статическое ключевое слово).
Это статический объект, который является общим для всех экземпляров класса. У обычных членов нет этого свойства.
Это определение static
- существует одна копия данных. Он отдельно хранится, скорее всего, вместе со всеми другими статическими данными библиотеки или приложения.
Поскольку статические элементы класса хранятся отдельно в разделе BSS, каждый экземпляр класса имеет то же значение.
* Возможно. * Но еще раз, это деталь реализации, а не ключ к подлинному пониманию происходящего (или того, что гарантируется спецификацией). –
Потому что это то, что в этом контексте означает static
.
Поскольку секция $ 9.4.2/1 от стандарта C++ (2003) говорит,
Статический член данных не является частью подобъектов класса. Существует только одна копия статического элемента данных , общая для всех объектов класса .
Поскольку стандарт сам по себе определяет, что такое C++, что нет, так это то, как был разработан C++!
Статические элементы больше похожи на глобальные объекты. Такая же копия относится ко всем объектам!
Подробнее см. Это сообщение: Do static members of a class occupy memory if no object of that class is created?
- 1. Статические члены класса экземпляра
- 2. Связаны ли статические члены класса?
- 3. Powermock - насмехаясь статические члены класса
- 4. Статические члены класса в C++
- 5. статические члены Повсеместно статические методы
- 6. неразрешенный внешний символ на статические члены класса
- 7. PHP статические члены класса не работает
- 8. Почему Const синтаксис член ведет себя как статические члены класса
- 9. Почему не статические константные ссылки на переменные-члены класса?
- 10. Статические члены python
- 11. статические члены Си ++
- 12. Статические члены класса в общей библиотеке
- 13. Java Статические члены класса и Scala совместимость
- 14. Почему можно инициализировать не константные и статические константы-члены-члены, но не статические переменные-члены?
- 15. Объяснение Статические члены
- 16. C++ Статические члены класса инициализируются после конструктора
- 17. расширение класса, члены которого все статические
- 18. Когда статические члены класса C++ инициализируются?
- 19. Стационарные члены класса статические в Java?
- 20. Статические члены вводят объекты?
- 21. статические члены и consts
- 22. Почему мы используем статические члены на C#?
- 23. Доступ статические члены тематических классов
- 24. System.WIndows.Application статические члены потокобезопасны?
- 25. Статические члены в глобальном классе
- 26. Где размещаются статические классы/члены?
- 27. Статические члены в VB.NET
- 28. Выводя статические члены
- 29. Защищенные статические переменные-члены
- 30. C++ Статические Struct Тип члены
О, серьезно, давай. 2 downvotes? Просто потому, что они не понимают ключевую концепцию того, что означает «статический» (пока)? Вероятно, больше людей совершают эту ошибку, особенно в ранние дни программирования. И почему это делает этот вопрос менее ясным или полезным, чем, скажем, «Почему случайный не такой случайный?» (Который в равной степени может быть классифицирован в «здравом смысле»)? Я помню, что некоторое время назад в FAQ говорилось, что здесь даже приветствуются даже начинающие вопросы. – Joey
@Joey: Я согласен, ни один вопрос не должен гарантировать ниспровержение только потому, что он показывает невежество. Мы все должны начать где-то, и этот вопрос, хотя и краткий, хорошо написан и идет прямо к делу. –