Почему статические члены класса одинаковы для всех объектов? - PullRequest
4 голосов
/ 30 января 2011

Почему у нас нет разных копий статических переменных для разных объектов?

Ответы [ 7 ]

5 голосов
/ 30 января 2011

Потому что они будут членами экземпляра тогда.

Основная характеристика статических членов заключается в том, что они являются общими для всех экземпляров класса.

5 голосов
/ 30 января 2011

Поскольку в разделе $ 9.4.2 / 1 стандарта C ++ (2003) написано:

Статический элемент данных не является частью подобъекты класса. Есть только одна копия статического члена данных разделяется всеми объектами класс.

Поскольку только стандарт решает, что такое C ++, а что нет, значит, именно так и был разработан C ++!

Статические члены больше похожи на глобальные объекты. Одна и та же копия принадлежит всем объектам!

См. Этот пост для подробного ответа: Занимают ли статические члены класса память, если объект этого класса не создается?

4 голосов
/ 30 января 2011

Статический член не связан с конкретным экземпляром.

Если вам нужны разные значения элемента для каждого экземпляра, вы должны использовать instance members (удалите ключевое слово static).

3 голосов
/ 30 января 2011

Это определение static - существует одна копия данных. Он хранится отдельно, скорее всего, вместе со всеми другими статическими данными библиотеки или приложения.

3 голосов
/ 30 января 2011

Это по определению - статический объект - это объект, который используется всеми экземплярами класса.Обычные пользователи не имеют этого свойства.

1 голос
/ 30 января 2011

Потому что это означает static в этом контексте.

0 голосов
/ 30 января 2011

Поскольку статические члены класса хранятся отдельно в разделе BSS, поэтому каждый экземпляр класса имеет одно и то же значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...