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++