Considerações de inicialização adicionais
Em C++, a construção e destruição do objeto podem envolver a execução do código do usuário. Portanto, é importante entender que inicializações acontecem antes da entrada em main e que destruidores são invocados depois da saída de main. (Para obter informações detalhadas sobre a construção e destruição de objetos, consulte Construtores e Destruidores.)
As seguintes inicializações ocorrem antes da entrada em main:
Inicialização padrão de dados estáticos em zero. Todos os dados estáticos sem inicializadores explícitos são definidos como zero antes de executar qualquer outro código, inclusive a inicialização no tempo de execução. Os membros de dados static ainda devem ser explicitamente definidos.
Inicialização de objetos globais estáticos em uma unidade de conversão. Isso pode ocorrer antes da entrada em main ou antes do primeiro uso de qualquer função ou objeto na unidade de conversão do objeto.
Específico da Microsoft
No Microsoft C++, os objetos globais estáticos são inicializados antes da entrada em main.
FIM de Específico da Microsoft
Os objetos globais estáticos que são mutuamente interdependentes, mas em diferentes unidades de conversão, podem provocar comportamento incorreto.