Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_раб С++_ОСНОВЫ ПРОГРАММИРОВАНИЯ_ч_2_изм_чис...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
803.84 Кб
Скачать

3.3.Особенности перегрузки функций

Для большего понимания удобства использования перегрузки рас­смотрим еще один практический пример (Листинг 3.60):

Листинг 3.60. Перегрузка функции по типу параметров

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

До сих пор рассматривались перегружаемые функции, отличающи­еся типом своих аргументов. Однако перегружаемые функции могут также отличаться и чистом аргументов, как показано в этом приме­ре (Листинг 3.49):

Листинг 3.49. Перегрузка функции по числу параметров

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

Листинг 3.61. Неправильная перегрузка функций

Как видно из приведенного выше примера (Листинг 3.50), у ком­пилятора нет возможности выяснить, какую версию функция f1() вызывать.

3.4.Использование параметров по умолчанию

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

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

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

  • с двумя заданными параметрами;

  • только с первым заданным параметром. В этом случае b по умолчанию станет равным нулю;

• вызываться без всяких параметров, при этом а и b по умолча­нию станут равными нулю.

Таким образом, все следующие вызовы f() правильны (Листинг 3.62 ):

Листинг 3.62. Вызовы функции, использующей параметры по умолчанию

Из этого примера должно быть ясно, что невозможно передать по умолчанию значение а и задать b.

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

Как Вы, вероятно, догадались, все параметры по умолчанию должны находиться правее параметров, передаваемых обычным путем. Даже больше, после того как Вы начали задавать параметры по умолча­нию, уже нельзя задавать параметры, которые по умолчанию не передаются.

Еще несколько слов о параметрах по умолчанию: они должны быть константами или глобальными переменными. Они не могут быть локальными переменными или другими параметрами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]