C++ Программирование в среде С++ Builder 5

Аргументы по умолчанию


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

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

Вот небольшая иллюстрация:

//////////////////////////////////////////////////

// Defaults.срр: Аргументы по умолчанию.

//

#include <stdio.h>

int Sum(int a, int b, int с = 0, int d = 0);

//Корректный прототип.

//

// Следующий прототип был бы некорректным:

// int Sum(int а, int b = 0, int с, int d = 0) ;



// int Sum(int a, int b, int с, int d)

// Определение функции.

{

return а + b + с + d;

}

int main(void) (

printf("l + 2 + 3 + 4 = %d\n", Sum(l, 2, 3, 4));

printf("1 + 2 + 3 = %d\n", Sum(l, 2, 3) ) ;

printf("1 + 2 = %d\n", Sum(1, 2));

//

// Недопустимый вызов:

// printf(" 1 + 2 + 4 = %d\n", Sum(l, 2,, 4)) ;

//

return 0;

}

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

Главная функция определяется в примерах как int main (void), но это не существенно, и если вы захотите посмотреть, как они работают, можно оставить заголовок, который генерирует C++Builder.

Функция Sum, как видите, вычисляет сумму четырех переданных ей чисел. Благодаря значениям по умолчанию последние два аргумента в вызове Sum можно не указывать, если требуется посчитать сумму всего двух или трех чисел.

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



Содержание раздела