Понедельник, Июль 5th, 2010

Шпоры по С++

Так ссылка не может иметь тип void.Ссылку нельзя создать с помощью операции new, Т.е. для ссылки нельзя выделить новый участок памяти. Не определены ссылки на другие ссылки. Нет указателей на ссылки и невозможно создать массив ссылок.
При определении ссылок обязательна их инициализация. Однако в описаниях ссылок инициализация необязательна.
Ссылка на функцию определяется подобно указателю:
тип_функции (&имя_ссылки) (спкциф_парам.) инициал_выражение.
Большими возможностями обладают ссылки, формируемые как возвращенный результат. Возвращение функцией ссылки позволяет организовать многократное вложенное обращение к нескольким функциям и один и тот же объект можно многократно изменять по разным законам

14 Перегрузка функций

C++ позволяет определить несколько функций с одним и тем же именем, если эти функции имеют разные наборы параметров(по меньшей мере разные типы параметров). Эта особенность называется перегрузкой функции. При вызове перегруженной функции компилятор С++ определяет соответствующую функцию путем анализа количества, типов и порядка следования аргументов в вызове. Перегрузка функций обычно используется для создания нескольких функций с одинаковым именем, предназначенных для выполнения сходных задач, но с разными типами данных.
Перегруженные функции различаются компилятором с помощью их сигнатуры – комбинации имени функции типов ее параметров. Компилятор кодирует идентификатор каждой функции по числу и типу ее параметров, чтобы иметь возможность осуществлять надежное связывание типов. Надежное связывание типов гарантирует, что вызывается надлежащая функция и что аргументы согласуются с параметрами.
При использовании перегруженных функций нужно с осторожностью задавать начальные значения их параметров. Предположим мы следующим образом определили перегруженную функцию умножения разного количества параметров:
Double multy (double x) {return x*x*x;}
Double multy (double x, double y ) {return x*y*y;}
Double multy (double x, double y, double z ) {return x*y*z;}
Каждое из следующих обращении к функции multy ( ) будет однозначно идетифицировано и правильно обработано:
multy ( 0.4)
multy (4.0,12.3)
multy (0.1е-6, 1.2е4,6.4)
Однако добавление в программу такой функции прототипа с начальными значениями параметров:
Double multy (double a=1.0, double b=1.0, double c=1.0, double d=1.0 ) {return a*b+c*d;} навсегда запутает любой компилятор при попытках обработать, например, такой вызов: multy (0.1е-6, 1.2е4)

15 Шаблоны функций

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Категория: Шпоры