46231

Указатели на функции, имитация таблиц виртуальных функций с помощью процедурного подхода

Доклад

Информатика, кибернетика и программирование

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

Русский

2013-11-20

14.47 KB

0 чел.

16.Указатели на функции, имитация таблиц виртуальных функций с помощью процедурного подхода.

Указатель на функцию

Возможны только две операции сфункциями: вызов и взятие адреса.

Указатель, полученный с помощью последней операции, можно впоследствии использовать для вызова функции.

voiderror(char* p) { /* ... */ }

// указатель на функцию

void (*efct)(char*);

void f() {

efct = &error;

 // efctнастроен на функцию error

 // вызов error через указатель efct

(*efct)("error");

}

Реализация таблицы виртуальных функций

Ниже приводится пример имитации ОО стиля. Он демонстрирует те затраты, от которых удалось избавиться, перейдя на объектно-ориентированные языки. Подобный прием наверняка использовался многими программистами еще до наступления эры ООП с целью создания более гибкой конструкции программы.

// Структура таблицы виртуальных функций базового

// класса. Содержит указатели на функции,

// переопределяемые в производных классах.

struct shape_vtbl {

 // ввод данных из стандартного потока

void (*In)(shape *_this);

 // вывод данных в стандартный поток

void (*Out)(shape *_this);

 // вычисление площади фигуры

double (*Area)(shape *_this);

 // удаление обобщенной фигуры

void (*Destroy)(shape *_this);

};


 

А также другие работы, которые могут Вас заинтересовать

27156. Канальное кодирование (модуляция) 137 KB
  Канал Q Канал Q содержит данные хронирования содержимого диска и нужен для обеспечения функций поиска заданного фрагмента повтора воспроизведения по программе а также обеспечивает возможность индикации текущего времени как на диске в целом так и на каждой дорожке в отдельности. Одновременно с этим в графе Начало музыкального фрагмента записывается время соответствующее началу в минутах секундах и блоках одна секунда 75 блокам номера от 00 до 74 по шкале времени исчисляемому от начала программной зоны диска начало первого...
27157. История цифровой звукозаписи 84 KB
  А первая публичная демонстрация цифровой звукозаписи состоялась в 1967 году. После столь блистательного дебюта цифровой звукозаписи работы в этом направлении начались и на других фирмах. Поэтому внедрение результатов работ по цифровой звукозаписи происходило исключительно в студиях где размеры создаваемых систем и их стоимость существенной роли не играли.
27158. Производство компакт-дисков 125.5 KB
  На поверхность основы дискаоригинала которая при этом должна быть идеально плоской наносится тонкий слой светочувствительного материала фоторезиста. Структурная схема установки записи дискаоригинала показана на рисунке. Излучение лазера воздействует на фоторезист покрывающий поверхность вращающегося дискаоригинала и оставляет на нем зоны засветки соответствующие единицам цифрового кода.
27159. Световые волны и оптические системы 184.5 KB
  Кроме того колебания векторов Ē и Н происходит строго синхронно и во взаимно перпендикулярных направлениях рис. Поперечные волны обладают изначальным по самой природе им присущим свойством называемым поляризацией. Если на этой плоскости выбрать произвольно некоторую систему координат XY то линейно поляризованный свет будет иметь вид отрезка прямой под определенным углом α к одной из выбранных осей рис. Однако линейная поляризация монохроматической волны наблюдается только тогда когда разность фаз φ между составляющими X и Y суммарного...
27160. Выделение цифрового сигнала и импульсов тактовой синхронизации 192 KB
  Среди таких причин можно назвать следующие: нестабильность мощности записывающего лазера вызывающая разброс размеров длины и ширины формируемых пит; нестабильность мощности воспроизводящего лазера; ограниченность и нелинейность амплитудночастотной характеристики тракта оптического воспроизведения; нелинейность фазочастотной характеристики тракта; неравномерность распределения мощности света в пределах пятна; наличие дифракции на питах; ограниченность апертуры входного зрачка объектива; неравномерность толщины...
27161. Варианты формата CD 221 KB
  Однако значительная информационная ёмкость нового носителя 740 Мбайт навела специалистов на мысль использовать его в качестве элемента постоянной памяти для хранения архивных данных. Каждый кадр как уже описывалось в главе 3 содержит в себе 24 исходных информационных символа байта. В формате CDROM эти 24 символа являются обезличенными и могут нести в себе какую угодно информацию лишь бы она была преобразована в двоичную форму и организована в байты. Изза наличия этой избыточности диск CDROM имеет меньшую информационную ёмкость до...
27162. Digital Versatile Disc (DVD) 187 KB
  Digital Versatile Disc DVD 12. История появления DVD К концу 1994 года в технической прессе стали появляться сообщения о том что известный тандем SONY PHILIPS подаривший миру технологию CD готов представить на суд потребителю еще более совершенный носитель идеально подходящий для записи информации практически любого характера. В процессе работы над новым носителем несколько раз менялось его название отражая основные намерения разработчиков на том или ином этапе: MMCD MultiMediaCD; HDDVD High Density Digital Video Disc; HDCD...
27163. Система магнитооптической записи звука «Минидиск» 224.5 KB
  Звуковые характеристики Число каналов Детонации 2 или 1 отсутствуют Формат данных Частота дискретизации кГц Кодирование сжатие данных Модуляция канальный код Система защиты от ошибок 441 ATRAC EFM 814 ACIRC Оптические характеристики Длина волны излучения лазера нм Числовая апертура объектива Мощность излучения лазера при записи мВт Метод записи 780 045 25 50 главный пучок Модуляция магнитного поля 11. В общем случае магнитооптический эффект это изменение оптических свойств вещества в зависимости от его...
27164. СИСТЕМА ЦИФРОВОЙ МАГНИТНОЙ ЗАПИСИ ЗВУКА R-DAT 182.5 KB
  Описание формата RDAT Rotary Head Digital Audio Tape Recorder это система цифровой звукозаписи на магнитную ленту шириной 381 мм равную ширине ленты в обычной аналоговой компакткассете с помощью вращающихся головок. В отличие от формата CD здесь предусмотрено не только воспроизведение программ но и возможность их записи с высоким качеством. Режим I предназначен для записи и воспроизведения программ с частотой дискретизации 48 кГц при 16 разрядном линейном квантовании.