В C ++ статические члены не принадлежат экземплярам класса.они не увеличивают размер экземпляров и класса даже на 1 бит!
struct A
{
int i;
static int j;
};
struct B
{
int i;
};
std::cout << (sizeof(A) == sizeof(B)) << std::endl;
Вывод:
1
То есть размер A
и B
точно такой же,статические члены больше похожи на глобальные объекты, доступ к которым осуществляется через A::j
.
См. Демонстрацию на ideone: http://www.ideone.com/YeYxe
$ 9.4.2 / 1 из стандарта C ++ (2003),
Статический элемент данных не является частью подобъектов класса.Там есть только одна копия статического члена данных, совместно используемого всеми объектами класса.
$ 9.4.2 / 3 и 7 из Стандарта,
после того, как статический член данных был определен, он существует, даже если не созданы объекты его класса.
Статические члены данных инициализируются и уничтожаются точно так же, как нелокальные объекты (3.6.2,3.6.3).
Как я уже говорил, статические члены больше похожи на глобальные объекты!