Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Программируя на языке 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: Добавляется значение параметра по умолчанию




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 371; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.