В предыдущей главе мы определили функцию как набор операторов, которые выполняются последовательно. Хотя это, безусловно, верно, это определение не дает особого понимания того, почему функции полезны. Давайте обновим наше определение: функция — это повторно используемая последовательность операторов, предназначенная для выполнения определенной работы.
Вы уже знаете, что каждая исполняемая программа должна иметь функцию с именем main (где программа начинает выполнение при запуске). Однако, поскольку программы становятся все длиннее и длиннее, размещение всего кода внутри функции main становится все сложнее в управлении. Функции предоставляют нам способ разбить наши программы на небольшие модульные части, которые легче организовывать, тестировать и использовать. Большинство программ используют много функций. Стандартная библиотека C++ поставляется с большим количеством уже написанных функций для использования вами, однако так же часто можно написать свои собственные. Функции, которые вы пишете самостоятельно, называются пользовательскими функциями.
Рассмотрим случай, который может произойти в реальной жизни: вы читаете книгу, и вдруг вспоминаете, что вам нужно позвонить. Вы добавляете закладку в книгу, звоните, а когда звонок заканчивается, вы возвращаетесь к месту, которое вы добавили в закладки, и продолжаете читать книгу с того места, где остановились.
Программы на C++ могут работать таким же образом. Программа будет выполнять операторы последовательно внутри одной функции, когда она столкнется с вызовом функции. Вызов функции — это выражение, которое сообщает ЦП о необходимости прервать текущую функцию и выполнить другую функцию. ЦП «ставит закладку» в текущую точку выполнения, а затем вызывает (выполняет) функцию, указанную в вызове функции. Когда вызванная функция завершается, ЦП возвращается к точке, отмеченной закладкой, и возобновляет выполнение.
Функция, инициирующая вызов функции, называется вызывающей, а вызываемая функция — вызываемой функцией.