Глава 11. Функции________________________________________247
риант (см. далее в этой главе "Имена функций"). Синтаксис каждого аргумента таков:
type variable name
При наличии одного и более аргументов они разделяются запятой. Вот пример функции, принимающей три целочисленных аргумента а, ь и с:
void TakesThree( int a, int b, int с) ;
Примеры, приведенные в этой. главе, безусловно, представляют нечто лишь условно приближенное к реальной жизни; тем не менее общий синтаксис в них дан вполне исчерпывающе. То, что вы видели выше — примеры операторов Foo и TakesThree — было объявлениями функций. Обратите внимание на завершающую точку с запятой. Разница между объявлениями функций и их определениями состоит в наличии тела функции. Вот определения тех же двух функций:
«
void Foo() {
// какой-то код } void TakesThree( int a, int b, int с) ;
{
// еще какой-то код
Определение не требует завершающей точки с запятой и использует фигурные скобки (} вокруг тела функции (в приведенном примере тело функции состоит из одних комментариев).
Объявление функций до первого использования
C++ требует объявлять функцию перед ее первым использованием в программе, чем отличается от С, где это необязательно. Это требование может быть удовлетворено несколькими способами. Во-первых, можно просто вынести объявление функции в начало модуля. Объявляя функцию, необходимо указывать тип возвращаемого значения, имя функции и типы аргументов; имена аргументов описывать необязательно. Итак, функцию TakesThree можно объявить следующим образом: ,
void TakesThree( int, int, int);
Тем не менее имена переменных все же лучше указывать, поскольку таким образом можно пояснить назначение данной функции. Второй способ, которым функция может быть объявлена и включена в любой модуль, состоит