Inicialização e encerramento do programa em C++
Um programa do C++ executa as mesmas operações que um programa do C na inicialização e no encerramento do programa, além de algumas outras descritas aqui.
Antes que o ambiente de destino chame a função main
e depois que ele armazenar os valores iniciais de constante especificados em todos os objetos que têm duração estática, o programa executará os construtores restantes para esses objetos estáticos. A ordem de execução não é especificada entre as unidades de translação; entretanto, é possível supor que alguns objetos iostreams são inicializados corretamente para uso desses construtores estáticos. Estes fluxos de texto de controle são:
cin – para entrada padrão.
cout – para saída padrão.
cerr – para saída de erro padrão não armazenada em buffer.
clog – para saída de erro padrão armazenada em buffer.
Também é possível usar esses objetos nos destruidores chamados para objetos estáticos, durante o encerramento do programa.
Assim como ocorre com o C, retornar de main
ou chamar exit
chama todas as funções registradas com atexit
na ordem inversa do Registro. Uma exceção gerada de uma função registrada desse tipo chama terminate
.
Confira também
Visão geral da biblioteca padrão C++
Acesso Thread-Safe na Biblioteca Padrão C++