Как реализовать полиморфизм - C (СИ)
Формулировка задачи:
У меня товарищ ходил на собеседовании по работе и там у него спросили как реализовать полиморфизм в си(именно си а не с++) он не знал ответ на этот вопрос и я тоже не знаю . Если можно объясните как это можно сделать и небольшой пример кода был бы весьма кстати. Заранее спасибо .
Решение задачи: «Как реализовать полиморфизм»
textual
Листинг программы
struct obj { void (*method_one)(); int (*method_two)(int); ... };
Объяснение кода листинга программы
- Структура
obj
объявлена с тремя полями:method_one
- указатель на функцию, которая будет вызвана для объекта типаobj
, если вызвать метод с именемmethod_one
.method_two
- указатель на функцию, которая будет вызвана для объекта типаobj
, если вызвать метод с именемmethod_two
.- ...
- В коде не объявлены сами функции, которые должны быть вызваны для объекта типа
obj
. - Для объекта типа
obj
можно вызвать методыmethod_one
иmethod_two
, которые будут выполнять определенные действия, в зависимости от того, какие функции были определены в другом месте кода. - Реализация полиморфизма достигается за счет того, что в структуре
obj
хранятся указатели на функции, а не сами функции. Это позволяет хранить в одном объекте указатели на разные функции, которые могут быть вызваны для этого объекта, в зависимости от контекста.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д