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