Функции в С++ для начинающих. Прототипы

Прототипы функций в С++.

  • Прототип функции является объявлением функции, которое сообщает компилятору имя функции, ее возвращаемый тип и типы ее параметров.
В С++ иногда необходимо предварительно описать сущность функции для дальнейшего её использования в программе. Такое предварительное описание называется прототипированием функций. Прототипы функций — они как эскизы. Для тех, кто не знает: "Эскиз — это предварительный набросок, фиксирующий замысел художественного произведения".
Прототипы функций служат некоторого рода словарём функций, которые будут задействованы в программе. Они, прототипы функций, помогают и нам видеть, какие функции существуют в коде (когда функций много, это имеет важное значение, легче не запутаться и не начать писать то, что уже было написано, например), и компилятору помогают понимать, что где-то в коде имеется функция с заявленным скелетом. Благодаря использованию прототипов функций — порядок написания функций не имеет никакого значения: что снизу-вверх, что сверху-вниз, что чехардой — всё равно.
Прототип функции отличается от самой функции тем, что у функции есть тело с описанием выполняемого внутри функции кода, а у прототипа функции тела нет. Прототипы функций должны быть описаны выше самих функций.

  • Пропуск точки с запятой в конце прототипа функции является синтаксической ошибкой.
Если в ваших планах было или будет создать прототип функции и вы забыли или забудете поставить точку с запятой, то предполагаемый вами прототип функции компилятор станет считать самой обычной функцией и ожидать от вас написание для неё внутреннего её кода.
  • В прототипе функции обязательно указывать тип функции, имя функции, типы параметров.

    • Хотя имена параметров в прототипах функций не обязательны (они игнорируются компилятором), многие программисты их указывают в целях документации.
  • Имена параметров в прототипе функции (которые, повторим, не обязательны) могут вводить в заблуждение, если они ошибочны или неосмысленны. По этой причине многие программисты создают прототипы, копируя первую строку определения соответствующей функции (если исходный код функции доступен) и добавляя в конец прототипа точку с запятой.
Под определением функции имеется в виду непосредственно функция или с пустыми фигурными скобками, или с кодом внутри фигурных скобок.
Простыми словами: ваш набросок функции должен содержать основную информацию о функции, а использование прототипов функций позволяет не заморачиваться, какая функция сверху, какая снизу:

  • Прототип функции — это своеобразный скелет, который только обозначает, что где-то в коде будет использована функция, в которой этот скелет станет основой.
Маленькая информационная табличка может помочь вам быстрее сообразить:

ПРОТОТИП
ФУНКЦИЯ

void foo();
void foo(){ код_функции}

int foo();
int foo(){ код_функции}

void foo(int);
void foo(int x){ код_функции}

void foo();
void foo(){ код_функции}

Когда вы начнёте разбивать программу на файлы, то вы, возможно, вынуждено будете применять прототипирование функций. В прототипах ничего плохого нет, прототипы функций можно воспринимать как средство выразительности, способствующее лучшему пониманию кода. Прототипы функций помогают и нам видеть некоторый набросок программы, и компилятору понимать и выискивать в коде описанную прототипом функцию.

3 комментария на «“Функции в С++ для начинающих. Прототипы”»

  1. Nir:

    Это же вроде раздела интерфейсов модуля в лазарусе, где описаны заголовки функций? Очень похоже на то.

    • Я не знаком с лазарусом.
      Но это просто описание названий функций для компилятора.
      Это как начать человеческий разговор с компилятором и душевно перечислить ему названия функций, которые используются и что для них нужно.

      В итоге, для компилятора не имеет значения порядок написания самих функций. Он знает о них и как они устроены.(название и параметры в них)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/robin-nikson/sozdaem-dinamicheskie-veb-sayty-s-pomoschu-php-mysql-javascript-css-i-html5/?lfrom=15589587

Последние комментарии

Яндекс.Метрика