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

Шпоры по С++

В определении указателя на функцию тип возвращаемого значения и сигнатура ( типы, количество и последовательность параметров) должны совпадать с соответствующими типами и сигнатурами тех функций, адреса которых предполагается присваивать вводимому указателю при инициализации или с помощью оператора присваивания.
Форма вызова функции с помощью указателя на функцию:
(*имя_указателя) (список_ фактических_параметров)
При определении указатель на функцию может быть инициализирован. В качестве инициализирующего выражения должен использоваться адрес функции, тип и сигнатура которой соответствует определяемому указателю.
Указатели на функцию могут быть объединены в массвы. Н-р, int (*ptrArray)(char)[4]; — описание массива с именем ptrArray из четырех указателей на функции, каждая из которых имеет параметр типа char и возвращает значение типа int. Чтобы обратиться, например, ко второй из этих функций, потребуется такой оператор: int a = (*ptrArray[1])(‘k’);
Для удобства последующих применений и сокращения производных описаний рекомендуется с помощью спецификатора typedef вводить имя типа указателя на функцию: typedef float (*ptf)(float); Массив указателей на функции удобно использовать при разработке всевозможных меню. Для этого действия, предлагаемые на выбор будущему пользователю программы, оформляются в виде функций, адреса которых помещаются в массив указателей на функции. Пользователю предлагается выбрать из меню нужный ему пункт и по номеру пункта, как по индексу, из массива выбирается соответствующий адрес функции. Обращение функции по этому адресу обеспечивает выполнение требуемых действий.

13 Ссылки
В С++ ссылка определена как другое имя (синоним) уже существующего объекта. Для определения ссылки используется символ &, если он употребляется в следующем контексте:
type& имя_ссылки инициализатор;
type& имя_ссылки = выражение;
type& имя_ссылки (выражение);
В качестве инициализирующего выражения должно выступать имя некоторого объекта, имеющего значение в памяти. Значением ссылки становится адрес этого объекта. Ссылка имеет тип инициализирующего выражения. Для доступа к участку памяти, связанного с ссылкой, нет необходимости применять разыменование. Функционально ссылка ведет себя подобно обычной переменной того же, что и ссылка типа.
Имена переменной и ссылки, «настроенной» на эту же переменную, полностью равноправны и соотносятся с одним и тем же участком памяти. Однако ссылки не есть полноправные объекты, подобные переменным либо указателям. После инициализации значение ссылки изменить нельзя, она всегда «смотрит» на тот участок памяти (на тот объект ), с которым она связана инициализацией. Ни одна из операций не действует на ссылку, а относится к тому объекту, с которым она связана. Можно считать, что это основное свойство ссылки.
Результатом применения операции sizeof к ссылке является размер именуемого ей блока. Допустимо определять ссылку на константу:
const type& имя_ссылки инициализатор;

Страницы: 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

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