ВУЗ:
Составители:
Рубрика:
72
Все аргументы по умолчанию должны быть последними аргумен-
тами в списке – ни один явный аргумент не может находиться правее
их.
Если аргумент по умолчанию уже определён в одном объявлении,
он не может быть переопределён в другом. Аргументы по умолчанию
должны быть объявлены при первом объявлении имени функции и не
обязаны быть константами:
int i=8;
void func (int = i);
Заметим, что если инициализация аргументов произведена в про-
тотипе функции, в определении функции задавать инициализацию ар-
гументов не надо.
16.9. Переопределение функций
В С++ можно переопределять имена функций и использовать од-
но и то же имя для нескольких функций с различным типом или числом
аргументов.
Пусть объявлены следующие функции:
int func(int, int);
int func(char, double);
int func(long, double);
int func(float, …); // Функция с неопределенным числом аргумен-
тов.
int func(char*, int);
Рассмотрим, что будет происходить при вызове функции с име-
нем func с некоторым списком аргументов.
Первое, что будет делать компилятор – это пытаться найти функ-
цию, формальные аргументы которой соответствуют фактическим без
всяких преобразований типов или с использованием только неизбежных
преобразований – например, имени массива к указателю или значения
переменной к константе или наоборот.
char string[ ]=”Строка – это массив символов”;
int i=func (string, 13); // func (char*, int);
int j=func(1995L, 36.6); // func(long, double);
Если на первом этапе подходящая функция не найдена, то на вто-
ром этапе совершается попытка подобрать такую функцию, чтобы для
соответствия формальных и фактических аргументов достаточно было
использовать только такие стандартные преобразования, которые не
Страницы
- « первая
- ‹ предыдущая
- …
- 68
- 69
- 70
- 71
- 72
- …
- следующая ›
- последняя »
