Есть ли возможность выполнить какие-либо другие инструкции после вызова int main ()?
int main(){cout<<"a";}
и после этого вызова в main () происходит вызов cout<<«B»; где-то после. Без изменений int main()
бы то ни было.
Деструкторы статических объектов и функции, зарегистрированные с std::atexit
, выполнены после main
выходы.
#include <iostream>
#include <cstdlib>
struct S {~S() {std::cout << "c";}};
void f() {std::cout << "b";}
S s;
int main() {
std::atexit(f);
std::cout << "a";
}
Выход: abc
Вы могли бы поставить свою последнюю часть в atexit()
.
Он будет запущен после завершения программы, т. Е. После завершения вашего вызова main ().
Вы могли бы иметь несколько atexit
также.
Если более чем одна функция atexit была определена различными вызовами
для этой функции все они выполняются в обратном порядке как стек
(т.е. последняя указанная функция является первой, которая будет выполнена в
выход).
Да, определить класс, который делает cout << "b"
в его деструкторе, а затем определить глобальный экземпляр этого класса.
Короче, очень маленький вариант. Ты можешь использовать atexit()
чтобы что-то произошло после главных выходов, или у вас может быть глобальный объект, деструктор которого вызывается после основных выходов. Но конец main — это официально конец вашей программы.