Почему у нас нет разных копий статических переменных для разных объектов?
Потому что они будут членами экземпляра тогда.
Основная характеристика статических членов заключается в том, что они являются общими для всех экземпляров класса.
Поскольку в разделе $ 9.4.2 / 1 стандарта C ++ (2003) написано:
Статический элемент данных не является частью подобъекты класса. Есть только одна копия статического члена данных разделяется всеми объектами класс.
Поскольку только стандарт решает, что такое C ++, а что нет, значит, именно так и был разработан C ++!
Статические члены больше похожи на глобальные объекты. Одна и та же копия принадлежит всем объектам!
См. Этот пост для подробного ответа: Занимают ли статические члены класса память, если объект этого класса не создается?
Статический член не связан с конкретным экземпляром.
Если вам нужны разные значения элемента для каждого экземпляра, вы должны использовать instance members (удалите ключевое слово static).
Это определение static - существует одна копия данных. Он хранится отдельно, скорее всего, вместе со всеми другими статическими данными библиотеки или приложения.
static
Это по определению - статический объект - это объект, который используется всеми экземплярами класса.Обычные пользователи не имеют этого свойства.
Потому что это означает static в этом контексте.
Поскольку статические члены класса хранятся отдельно в разделе BSS, поэтому каждый экземпляр класса имеет одно и то же значение.