Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 70

float result = multiply((float)х, у);

Здесь х имеет тип int, но вы приводите его к типу float, после чего компилятор успешно вызывает float-версию функции multiply().

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

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

Функции в Си++ могут иметь аргументы по умолчанию (default parameters), которые, как следует из названия, используются при отсутствии явного указания аргумента при вызове функции.

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

// объявление, параметр 'eraseFirst' по умолчанию имеет значение false void Redraw(bool eraseFirst = false); // определение

void Redraw(bool eraseFirst) {

if (eraseFirst) { // стирание

}

// рисование

}

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

Redraw(); Redraw(false) ;

Обратите внимание, что если аргумент имеет значение по умолчанию, он может быть полностью опущен при вызове функции. Вы можете исполь­зовать обычные аргументы и аргументы по умолчанию совместно:

int PlaySound(char* name, bool loop = false, int loops = 10); // вызов функции int res;

res = PlaySound("chime.wav"); // одиночный звук

res = PlaySoundCding.wav", true); // повтор звука 10 раз

res = PlaySoundCbell.wav", true, 5); // повтор звука 5 раз

Аргументы по умолчанию полезны по многим причинам. Прежде всего, они облегчают вам жизнь. Функция может в 9 случаях из 10 вызываться с одним и тем же набором аргументов. Передавая их по умолчанию, вы сокра­щаете объем текста, который нужно набирать при каждом вызове функции.

Web-дизайн (с) 2010 - 2017 All rights reserved