Я недавно написал сообщение:
Странная ошибка в программе на C ++: Удаление программы разрывов распечатки
..., в которой я пытался решить, казалось бы, непонятную проблему, вудаление оператора cout нарушило бы мою программу.
Как выяснилось, моя проблема заключалась в том, что я забыл вернуть свой флаг успеха / ложного успеха, который позже использовал для логики.
Ноочевидно, ЧТО-то возвращалось, и что-то всегда было правдой, если бы я оставил этот кут, но, казалось бы, «волшебным образом» стало бы ложным, когда я его вынул.
Мой вопрос ко всем вам:
Что определяет, что функция c ++ возвращает, когда в функции не выполняется команда return?Есть ли в этом какая-то логика?
Очевидно, что забывать свой тип возврата - плохая идея.В этом случае, тем не менее, это было во многом из-за характера моей программы - быстрой взломать работу.Позже я решил, что не стоит включать реализацию алгоритма для определения успеха / неудачи при вызове функции - но случайно оставил позади код, зависящий от возврата.
Удивительно, g ++ не дал мне никакогопредупреждения или ошибки при компиляции исполняемого файла, например:
g++ main.cc -g -o it_util
Моя версия: g ++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44)
Опять же, чтобы спасти других от разочарования в будущем, если они совершат ту же глупую ошибку и столкнутся с тем же, казалось бы, ошибочным поведением, может ли кто-нибудь пролить свет на то, где функция без возврата получает свое возвращаемое значение из ??
Спасибо !!