Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по С++ глава 2.doc
Скачиваний:
6
Добавлен:
05.11.2018
Размер:
249.86 Кб
Скачать

2.3.5. Стандартные параметры функции

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

void ShowMessage (char *Text, int Length = -1, int Color = 0);

В этой гипотетической функции значение параметра Length, равное –1, заставляет функцию вычислять длину текста, а значение параметра Color, равное 0, задает отображение текста черными буквами.

Если для некоторого параметра задано стандартное значение, необходимо определить стандартные значения для последующих параметров (т.е. для всех параметров, записанных справа от него). Нельзя объявить функцию так:

void ShowMessage (char *Text, int Length = -1, int Color);

// ОШИБКА: пропущено стандартное значение для 3-го параметра

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

ShowMessage ("Hello"); // то же, что ShowMessage ("Hello", -1, 0);

ShowMessage ("Hello", 5); // то же, что ShowMessage ("Hello", 5, 0);

ShowMessage ("Hello", 5, 8) ;

Если параметр с заданным стандартным значением при вызове функции опущен, то необходимо опустить все параметры, находящиеся справа от него и имеющие стандартные значения. Функцию ShowMessage нельзя вызвать следующим образом:

ShowMessage ("Hello", , 8); // ОШИБКА: синтаксическая, ошибка

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

// на глобальном уровне

int Palette = 1;

int GetColor (int Pal);

void ShowMessage(char *Text, int Length = -1,

int Color = GetColor (Palette));

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

void ShowMessage (char *Text, int Length = -1, int Color = 0);

void main ()

{

// код функции ...

}

void ShowMessage (char *Text, int Length = -1, int Color = 0)

// СШИБКА: повторное назначение стандартных

// значений параметрам 2 и 3

{

// код функции ...

}

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

void ShowMessage (char *Text, int Length » -1, int Color - 0);

// далее в исходном файле:

void ShowMessage {char *Text = "", int Length, int Color);

// OK: Добавляется значение параметра по умолчанию