Представьте, что вы разрабатываете модель для выполнения приложения. У вас есть два варианта:
A) Когда достигнут конец программы, она прекращается.
B) Когда достигнут конец программы, она должна оставаться в каком-то странном состоянии неопределенности. Он по-прежнему сохранит системные ресурсы и фактически ничего не будет делать, но для его закрытия пользователь должен явно прекратить его.
Я думаю, что любой выбрал бы вариант А здесь, и это то, что вы видите. Конец main
достигнут, и ваша программа завершает работу.
Если вы хотите сделать паузу в конце, примите какие-то данные от пользователя, т.е.
char c;
std::cin >> c;
return 0;