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

};


 

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

8496. Административно - правовая охрана общественной безопасности личности и общественного порядка 295.5 KB
  Административно - правовая охрана общественной безопасности личности и общественного порядка Введение Современные проблемы обеспечения административно-правовой охраны общественного порядка и общественной безопасности личности имеют комплексный, мног...
8497. Исследование P-N перехода 2.3 MB
  Исследование p-n перехода Методические указания содержат три основных раздела: теорию, описание экспериментальной установки и порядок выполнения работы. В теоретической части изложены: зонная теория электропроводности твердого тела, выпрямляющее дей...
8498. Тепловой и динамический расчет бензинового двигателя внутреннего сгорания ВАЗ-2103 458.22 KB
  Тепловой и динамический расчет бензинового двигателя внутреннего сгорания ВАЗ-2103 Введение Тепловой расчет двигателя служит для определения параметров рабочего тела в цилиндре двигателя, а также оценочных показателей рабочего процесса, для оценки м...
8499. Древнеиндийская философия 134 KB
  Древнеиндийская философия Индийская культура является одной из самых древних на Земле. Древнейшие письменные источники датируются III тысячелетием до н.э. Чаще всего тексты высекались на камне, металлических пластинах, дереве, а также на керамике. ...
8500. Китайская хохлатая собака 1.28 MB
  Китайская хохлатая собака. С тех пор как в 1965 году китайская хохлатая собака была вновь завезена в Великобританию, интерес к этой породе значительно вырос. Тщательное выведение породы и расширение знаний в области генетики...
8501. Жизнь и творчество Ду Фу 68 KB
  Восточные философские и религиозные взгляды существенно отличаются от западноевропейских. Их объединяют целостное восприятие мира, отсутствие сосредоточенности на человеке. Мерой всего, объектом поклонения выступает природа, в которой человек полн...
8502. Китайская мечта населения Северо-Востока КНР 109.5 KB
  Китайская мечта населения Северо-Востока КНР В настоящее время, понятие мечта занимает одно из первых мест в рейтинге модных мировых тенденций. И эта тенденция обязана столь стремительному успеху тому, что современное общество дает индивиду зн...
8503. Китайская медицина. Философские основы китайской медицины 88.5 KB
  Китайская медицина. Философские основы китайской медицины. Здоровье - одно из главных достояний человека. Между тем, по мере развития цивилизации растет и число факторов, повреждающих здоровье. Количество болезней, известных современной медицин...
8504. Философские основы китайской медицины. Китайская медицина 273.5 KB
  Китайская медицина. Философские основы китайской медицины. Основной подход: Западная медицина Использование фармакологических препаратов - чужеродных для организма химических веществ. Каждое их применение порождает новые проблемы, т.к. безвредн...