Здравствуйте, r2b2, Вы писали:
R>Я — самоучка, так что сорри за глупые вопросы. R>Вот есть у меня допустим библиотека классов. И допустим есть там (несколько) классы, у которых есть static переменные-члены. (этож фактически получается те же глобальные переменные) Ну, например класс сделанный по шаблону Monolite. Вопрос. А если я не юзаю этот монолит в своей программе, его статические переменные всеравно будут у меня место занимать или нет? Вот если бы у меня вместо этого монолита были бы только его переменные и функции в намаспейсе, то компиллер ведь все равно выделит статическое место для этих переменный, пофиг использую я их или нет. Да? А вот в случае с монолитным классом?
В общем-то, насколько я понимаю это зависит от компилятора. Но если ты напишешь
место выделит все равно (в сегменте данных) , а будет ли выполнена инициализация или нет зависит от типа данных если это твой класс
CMyClass my_class;
то для него при старте приложения (до входа в твою main) будет вызван конструктор по умолчанию,
для встроенных типов инициализации выполнена не будет и там будет мусор если инициализирующее значение не указано явно
т.е.
long l; — тут мусор
а в
long l=5; — соотвественно в этом случае инициализируется 5
место будет выделено одназначно, но вообще в принципе если поставить static
т.е. static CMyClass my_class ;
т.е. переменная видна ТОЛЬКО в пределах модуля
компилятор может соптимизировать и убрать.... но это вряд ли...