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

};


 

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

36914. Выделение и перемещение фрагментов изображения, кадрирование изображений 158.5 KB
  dobe Photoshop Тема: Выделение и перемещение фрагментов изображения кадрирование изображений Цель: приобрести навыки работы с инструментами выделения фрагментов изображений научиться перемещать и копировать выделенные фрагменты. Краткие теоретические сведения В данном уроке используются следующие инструменты: Инструмент Zoom Масштаб позволяет получать изображение на экране в увеличенном или в уменьшенном виде. Инструмент Crop Рамка позволяет выделить прямоугольный фрагмент изображения и удалить ту его часть которая осталась за...
36915. КОМПЬЮТЕРНАЯ СИСТЕМА PROJECT EXPERT. ФОРМИРОВАНИЕ ФИНАНСОВОЙ МОДЕЛИ ПРОЕКТА 47.5 KB
  ФОРМИРОВАНИЕ ФИНАНСОВОЙ МОДЕЛИ ПРОЕКТА Цель: изучить систему команд Project Expert формирования финансовой модели инвестиционного проекта для предприятия. Построив с помощью Project Expert финансовую модель собственного предприятия или инвестиционного проекта можно получить такие возможности: разработать детальный финансовый план и определить потребность в денежных средствах на перспективу; определить схему финансирования предприятия оценить возможность и эффективность привлечения денежных средств из различных источников; разработать...
36916. Структура управления регионального международного аеропорта (РМА) 55 KB
  Непосредственно генеральному директору аэропорта подчиняются его замы и директора по направлениям а также самостоятельные структурные подразделения и службы. Типовая структура РМА представлена на схеме: Деятельность отдельных подразделений и служб аэропорта Основные функции службы качества: 1. разработка перспективных направлений повышения качества услуг авиакомпаниям и клиентам аэропорта; 2.
36917. Исследование статической и динамической характеристики термопары 188 KB
  Исследование статической и динамической характеристики термопары. Ознакомиться со схемами включения измерительного прибора в цепь термопары. Экспериментально получить статическую и динамическую характеристики термопары. Определить математическую модель термопары.
36918. Знакомство с математическим пакетом Scilab 141.5 KB
  Знакомство с математическим пакетом Scilb Scilb это система компьютерной математики которая предназначена для выполнения инженерных и научных вычислений таких как: решение нелинейных уравнений и систем; решение задач линейной алгебры; решение задач оптимизации; дифференцирование и интегрирование; обработка экспериментальных данных интерполяция и аппроксимация метод наименьших квадратов; решение обыкновенных дифференциальных уравнений и систем. Кроме того Scilb предоставляет широкие возможности по созданию и редактированию...
36919. ОРГАНИЗАЦИЯ РАБОЧЕГО ПРОСТРАНСТВА MS EXCEL. ВВОД И ФОРМАТИРОВАНИЕ ДАННЫХ. СОРТИРОВКА И ФИЛЬТРАЦИЯ ДАННЫХ 730.5 KB
  ВВОД И ФОРМАТИРОВАНИЕ ДАННЫХ. СОРТИРОВКА И ФИЛЬТРАЦИЯ ДАННЫХ Цель работы: изучить рабочее пространство приложения MS Excel научиться применять различные параметры форматирования к данным сортировать данные и проводить их фильтрацию по заданным условиям. Изучить параметры форматирования данных в MS Excel и научиться их настраивать. Научиться создавать последовательности данных.
36920. Установка и настройка сервера DHCP 14.43 KB
  Установка и настройка сервера DHCP Цель Изучить процесс установки авторизации сервера DHCP создания области и настройки параметров области Исходная конфигурация компьютера Компьютеры с операционной системой Windows 2003 Server с созданными контроллерами домена. Результат Сервер с установленной и настроенной службой DHCP Требования к отчету Теореретические сведения: Общие сведения о службе DHCP. Последовательность выполняемых действий Установка службы DHCP Авторизация сервера DHCP в ctive Directory Создание области и...
36921. Word. Основные возможности 122 KB
  Любой текст имеет формат определенного типа. Базовый формат текста зависит от стиля который применен к абзацу содержащему этот текст. Процесс изменения формата называется форматированием а следствием изменения формата является изменение внешнего вида документа. Стиль – это набор запомненных команд форматирования символов и или абзацев.
36922. Word: Способы запуска. Создание, открытие, сохранение, закрытие файла (документа) 93 KB
  Панели инструментов и их настройка. Контекстное меню в области панелей инструментов. ДЕЙСТВИЯ С ФАЙЛАМИ И ОКНАМИ ФАЙЛОВ Выполните действия связанные с созданием сохранением и закрытием файла: создайте файл для чего: 1й способ: нажмите кнопку Создать файл по умолчанию на Стандартной панели инструментов; 2й способ: нажмите сочетание клавиш CtrlN; 3й способ: выполните команды меню ФайлðСоздать.; – в появившемся окне Сохранение документа в раскрывающемся списке Папка откройте Вашу папку если Вашей папки нет то можно создать ее...