2010-07-05 4 views
0

В VC++ 2008 существует серьезная разница в инициализации статической локальной переменной и статического локального объекта. Статическая локальная переменная инициализируется перед main(), и ее инструкция определения внутри функции пропускается. Статический локальный объект инициализируется значением 0 перед main(), и его оператор определения внутри функции выполняется только один раз. Конструктор запускается, и объект инициализируется с помощью соответствующего значения. Все это можно увидеть в режиме отладки. Соответствует ли это решение существующему стандарту C++?статическая локальная переменная и статическая локальная инициализация объекта

+2

Пожалуйста, укажите точный код, вызывающий озабоченность. –

ответ

1

От http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf:

Каждый объект статической продолжительности хранения должна быть нулевой инициализируется при запуске программы перед любой другой инициализации происходит. [Примечание: в некоторые случаи, дополнительная инициализация делается позже. -end note]

Смежные вопросы