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

};


 

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

5975. Процессы горения и взрыва 1.59 MB
  Процессы горения и взрыва Книга написана применительно к действующей программе по дисциплине Теория горения и взрыва для высших учебных заведений. В ней изложены основные разделы современной теории горения: химические и тепло-массообменные процесс...
5976. Методы амортизации основных производственных фондов на предприятии 82.91 KB
  Для осуществления хозяйственной деятельности и нормального функционирования любое современное предприятие должно обладать необходимыми ресурсами, то есть иметь определенные средства и источники, с помощью которых можно производить и реализо...
5977. Жилищное право. Конспект лекций 990.5 KB
  Краткий конспект лекций содержит основные положения Жилищного права. В нем раскрываются определения понятий Жилищного права, его предмета и метода, проводится анализ основных принципов в сфере жилищных правоотношений, рассматриваются вопросы жилищно...
5978. Проблемы корпоративного права. Корпоративные правоотношения 85.58 KB
  Проблемы корпоративного права. Корпоративные правоотношения Основные понятия Корпорация – от лат. corpus habere - в Римском праве им обозначался статус юр. лица. Римск. право не знало учения о юр. лицах. Корпорация в РФ - ст. 71 ФЗ «О...
5979. Влияние легирующих элементов на механические и химические свойства стали 455 KB
  Следуя в ногу с техническим прогрессом, требующим удовлетворения растущих потребностей вновь создаваемых и развивающихся отраслей промышленности, ОАО ТАГМЕТ наращивал объем производства за счет расширения старых и строительства новых цехо...
5980. МЕХАНИЗМ МЫШЕЧНОГО СОКРАЩЕНИЯ 104.69 KB
  Мышечные ткани (обзор). Физиологические свойства поперечно-полосатых скелетных мышц. Структурно-функциональная характеристика мускулатуры (поперечно-полосатых мышц), их иннервация. Механизм мышечного сокращения. Явления, сопровождающие мышечное сокращение.
5981. Экономика как сфера жизнедеятельности общества 272.7 KB
  Чтобы существовать, жить и развиваться, сохранять и продолжать на земле свой род, человек обязан удовлетворять свои потребности. Хозяйственная деятельность человека предполагает: А) единство цели и средств ее достижения Б) затраты энергии и ресурсо...
5982. Основные понятия по передаче информации 937 KB
  Основные понятия по передаче информации Информация это совокупность сведений об окружающем нас мире. Эти сведения человек получает в процессе взаимодействия с окружающим миром, изучения различных явлений посредством книг, радио, телевидения и других...