Мне интересно, как статические переменные-члены обычно реализуются на таких языках, как С++, и если их использование влияет на размер создаваемых объектов.
Я знаю, что статические члены разделяются всеми экземплярами этого класса, но как они разделяются? Если он влияет на размер объекта, будет иметь 10 статических переменных, добавляющих больше размера, чем 1?
Я спрашиваю, потому что могу думать о двух способах его реализации:
- добавление указателя на статические данные для каждого объекта, аналогичного тому, как некоторые реализации добавляют указатель на таблицу виртуальных функций
- статические данные просто ссылаются непосредственно как глобальная переменная со смещением, которое разрешается компоновщиком/загрузчиком