Деструкторы вызвали завершение программы - PullRequest
3 голосов
/ 26 декабря 2009

Когда объект создается в вашей функции main (), вызывается ли его деструктор после завершения программы? Я бы предположил, так как main () все еще имеет область действия (всю программу), но я просто хотел убедиться.

Ответы [ 2 ]

16 голосов
/ 26 декабря 2009

Зависит от того, как ваша программа завершает работу. Если он завершается с возвращением main (либо явным возвратом, либо падением с конца), то да, любые автоматические объекты в main будут уничтожены.

Но если ваша программа завершает работу с помощью метода exit (), функция main на самом деле не выходит из области видимости и любые автоматические объекты не будут уничтожаться.

3 голосов
/ 26 декабря 2009

Объем объявлений внутри main () - это не вся программа. Он ведет себя так же, как любая нормальная функция. Так что, да, деструкторы объектов локального класса выполняются как положено. Если программа не завершится ненормально.

...