Вернул бы 0, используя C++ в классе за пределами основного закрытия приложения?

В настоящее время я работаю над реализацией файлов исправлений в некотором коде, и, очевидно, один из файлов исправлений использует return 0 в классе вне основного. Я знаю, что return 0 закроет приложение, если оно будет в основной функции, однако я не уверен, как оно будет функционировать в классе вне основной функции. В основном код может быть суммирован следующим образом в псевдокоде:

boost::uint64_t
namespace::class(etc. etc.)
{

   if (method.isValid)
   {
      //do stuff
   }
return 0;
}

Обычно, когда я думаю о возврате 0 в C++, я думаю о выходе из приложения, вызывая его в main, однако в этом случае я не уверен, выйдет ли это из приложения, или просто из-за функциональности класса / самого класса. Может кто-нибудь объяснить, что на самом деле будет делать возврат 0 в этой ситуации?

Спасибо Flyboy

4 ответа

Решение

Нет.

Подумайте, что случилось бы, если бы это было так:

int add(int a, int b) { return a + b; }

// somewhere:
int zero = add(2, -2); // would this exit the program?

Это не ноль, который важен в возвращении из main, это return, Вы можете вернуть любое значение из main и это приведет к закрытию программы (после очистки всех глобальных переменных, закрытия потоков и выполнения других задач очистки).

Возвращаясь из main выходит из приложения (независимо от возвращаемого значения - хотя стандарт определяет только значения для 0, EXIT_SUCCESS, а также EXIT_FAILURE). Возврат из какой-либо другой функции просто возвращает указанное значение (если оно есть) вызывающей стороне. Поток управления не изменяется только потому, что возвращаемое значение оказывается нулевым.

return 0 только относительно области действия текущей функции, поэтому она не закроет приложение, если оно находится за пределами main.

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

Другие вопросы по тегам