Синтаксис C++ избыточен? Зачем объявлять функцию, если в её определении всё равно указываются её тип и параметры?

Компьютеры программирование язык C++ языки

Определение is AKA имлементация или прототип.

Примечание:
> а в чём вопрос состоит?

Ну, собсна, так ли объявления жизненно необходимы, или при желании можно было бы обойтись только определениями (включающими и тип и описания параметров)?

Примечание:
@PetSerAl (Сергей Петров): Так ли страшны циклические зависимости (ведь рекурсивные же функции имеются в виду?)? Не вижу принципиальных проблем - ведь при первом проходе компилятором всё равно выцепляются ВСЕ функции (вся необходимая информация об их типах и т.д.).

Примечание:
> На сколько я помню C++, компилятор не работает таким образом.

Т.е. в принципе гипотетически в параллельной реальности мог бы? :) Вот в этом на самом деле и состоит мой вопрос.
Ответы:
а в чём вопрос состоит?
Прототипы нужны во первых для того чтобы видеть структуру твоего приложения.
Можно обойтись только определениями, при условии, что нет циклических зависимостей между функциями и у всех функций есть определение.
>Не вижу принципиальных проблем - ведь при первом проходе компилятором всё равно выцепляются ВСЕ функции (вся необходимая информация об их типах и т.д.).
На сколько я помню C++, компилятор не работает таким образом. Все используемые вещи (за одним исключением) должны быть объявленны перед использованием. Причём, если некоторая функция имеет несколько перегрузок, то в том месте, где используется функция, будут рассматриватся только те, которые объявленны до этого использования.
>Т.е. в принципе гипотетически в параллельной реальности мог бы?
Не знаю как в параллельной реальности, но в этой есть C#, компилятор которого именно так и работает. Такого понятия, как объявление функции там нет. Функции там могут определятся в любом порядке, в том числе в разных файлах.


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.