Вернул бы 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 - независимо от возвращаемого значения - завершается из (однопоточного) приложения. Но другие функции приходят и уходят все время.