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

};


 

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

26820. Формирование монологической речи у дошкольников 51.5 KB
  Монологическая речь – более сложный вид связной речи. Говоря о монологической речи, имеется в виду формирование связного высказывания или, по определению лингвистов, умения создавать текст.
26821. Задача Коши для ОДУ первого порядка 111.5 KB
  При объектном подходе акцент переносится на конкретные характеристики системы являющейся предметом программного моделирования. Это позволило создавать программные системы максимально похожие на реальные и при этом добиваться наивысшего уровня абстракции. Концептуальная модель системы С чего начать Для одной и той же системы можно составить множество моделей. Они будут отличаться: степенью детализации учета тех или иных особенностей и режимов функционирования отражать определенную грань сущности системы ориентироваться на...
26823. Анатомический состав и морфофункциональная характеристика органов кровообращения. Особенности кровоснабжения отдельных органов 5.99 KB
  Анатомический состав и морфофункциональная характеристика органов кровообращения. особенности кровоснабжения отдельных органов. Система органов кровообращения состоит из центрального органа сердца; кроветворных органов селезенки костного мозга и лимфатических узлов; кровеносных сосудов артерий вен и капилляров. Таким образом сосуды несущие кровь от сердца к органам называются артериями а сосуды несущие кровь от органов к сердцу венами.
26824. Общие закономерности строения, хода и ветвления кровеносных сосудов 5.4 KB
  Строение кровеносных сосудов: Кровеносные сосуды по функции и строению разделяются на проводящие сосуды артерии и вены и питающие сосуды капилляры. Сосуды vasa vasorum и нервы nervi vasorum. Артерии arteria сосуды по которым кровь выносится из сердца. Соединяет сосуды с органами и мышцами По строению стенок различают артерии эластического переходного и мышечного типов.
26825. Основные данные фило- и онтогенеза сердечно -сосудистой системы 3.41 KB
  У амфибий на ряду с жаберным дыханием появляется легочное с образованием легочного круга кровообращения: из жаберной артерии появл. У рептилий 2 круга кровообращения: легочной и соматический. Следовательно 2 круга кровообращения. Одновременно с ними закладывается сердце которое на 7 неделе становится 4хкамерным устанавливается желточный круг кровообращения который заменяется на плацентарное кровообращещение связанное со стенкой матки.
26826. Круги кровообращения 2.55 KB
  круги кровообращения Большой или системный круг кровообращения начинается от левого желудочка сердца из которого кровь поступает в аорту. Путь крови от левого желудочка до правого предсердия составляет большой круг кровообращения. Из правого предсердия кровь поступает в правый желудочек который служит началом малого круга кровообращения. Малый или легочный круг кровообращения начинается из правого желудочка легочной Артерией которая в легких распадается на многочисленные капилляры что способствует освобождению крови от углекислого...
26827. Анатомическое строение сердца 4.15 KB
  анатомическое строение сердца Сердце cor гр. Предсердия располагаются в основании сердца и снаружи от желудочков отделены венечной бороздой sulcus coronarius. Желудочки образуют большую часть сердца.Обе борозды сходятся на краниальной поверхности сердца не достигая его верхушки.
26828. Деление общего плечеголовного ствола 4.3 KB
  Он делится на: Самая верхняя межреберная артерия a. intercostalis suprema отдающая 25 дорсальные межреберные артерии для питания грудной стенки холки и спинного мозга Дорсальная лопаточная артерия a. Глубокая шейная артерия a. Позвоночная артерия a.