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);

};


 

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

45935. Основные понятия в области метрологии. Метрология. Измерение. Погрешности измерения. Средство измерения. Единство измерений. Проверка средств измерений 18.03 KB
  Единство измерений. Проверка средств измерений.Рассматривает общие теоретические проблемы разработка теории и проблем измерений физических величин их единиц методов измерений.Устанавливает обязательные технические и юридические требования по применению единиц физической величины методов и средств измерений.
45936. Погрешности средств измерений. Систематическая погрешность средств измерений. Случайная погрешность средств измерений. Абсолютная, относительная погрешность. Точность средств измерений. Класс точности средств измерений 12.85 KB
  Погрешности средств измерений. Систематическая погрешность средств измерений. Случайная погрешность средств измерений. Точность средств измерений.
45937. Эталоны единиц физической величины. Эталон еденицы физической величины. Поверочная схема для средств измерений. Рабочий эталон. Вторичный эталон. Международный эталон 12.86 KB
  Эталоны единиц физической величины. Эталон еденицы физической величины. Рабочий эталон. Вторичный эталон.
45938. Средства измерительной техники. Средство измерений. Автоматичесое средство измерений. Автоматизированное средство измерений 12.24 KB
  Средство измерений. Автоматичесое средство измерений. Автоматизированное средство измерений. Средства измерительной техники измерительная техника – обобщающее понятие охватывающее технические средства специально предназначенные для измерений.
45939. Классификация размерных цепей. Основные термины и определения. Метод расчета размерных цепей, обеспечивающие полную взаимозаменяемость 35.97 KB
  Размерные цепи отражают объективные размерные связи в конструкции машины технологических процессах изготовления ее детали и сборки при измерении возникающие в соответствии с условиями решаемых задач. Обозначаются размерные цепи прописными буквами русского алфавита и строчными буквами греческого алфавита кроме . Размеры образующие размерную цепь называют звеньями размерной цепи. Одно звено в размерной цепи замыкающее исходное а остальные – составляющие.
45941. Назначение и виды валов и осей. Типы соединения вала с установленными на нем деталями. Технические требования к рабочим поверхностям вала. Расчет вала на прочность по напряжению изгиба и кручения 28.5 KB
  Валы в отличие от осей предназначены для передачи вращающих моментов и в большинстве случаев для поддержания вращающихся вместе с ними относительно подшипников различных деталей машин. Валы несущие на себе детали через которые передается вращающий момент воспринимают от этих деталей нагрузки и следовательно работают одновременно на изгиб и кручение. При действии на установленные на валах детали осевых нагрузок валы дополнительно работают на растяжение или сжатие. Прямые валы в зависимости от...
45942. Муфты. Виды соединительных муфт. Особенности их назначения и эксплуатации 28.5 KB
  Муфты. Муфты приводов осуществляют соединение валов концы которых подходят один к другому вплотную или разведены на небольшое расстояние причем соединение должно допускать передачу вращающего момента от одного вала к другом. Муфты приводов подразделяются на четыре класса Класс 1 нерасцепляемые муфты в которых ведущая и ведомая полумуфты соединены между собой постоянно. Класс 2 управляемые муфты позволяющие сцеплять и расцеплять ведущий и ведомый валы как во время их остановки так и во время работы на ходу.
45943. Подшипники скольжения. Виды подшипников по назначению и воспринимаемой нагрузке. Типовые элементы конструкции. Материалы вкладышей 29 KB
  В зависимости от рода трения в подшипнике различают подшипники скольжения в которых опорная поверхность оси или вала скользит по рабочей поверхности подшипника и подшипники качения в которых развивается трение качения благодаря установке шариков или роликов между опорными поверхностями оси или вала и подшипника. В зависимости от направления воспринимаемой нагрузки подшипники скольжения различают: радиальные для восприятия радиальных т. При одновременном действии на ось или вал радиальных и осевых нагрузок обычно применяют сочетание...