Возможные дубликаты:
Можете ли вы написать объектно-ориентированный код в C?
Объектно-ориентированный шаблон в C?
Я помню, как некоторое время назад читал о ком-то (я думаю, это был Линус Торвальдс) о том, как С++ - это ужасный язык и как вы можете писать объектно-ориентированные программы с C. На то, что успел задуматься, я не действительно увидеть, как все объектно-ориентированные понятия переносятся на C. Некоторые вещи довольно очевидны. Например:
- Чтобы эмулировать функции-члены, вы можете поместить указатели функций в структуры.
- Чтобы эмулировать полиморфизм, вы можете написать функцию, которая принимает переменное количество аргументов и делает некоторые вуду в зависимости от, скажем,
sizeof
параметра (ов)
Как бы вы эмулировали инкапсуляцию и наследование?
Я предполагаю, что инкапсуляция может быть эмулирована путем размещения вложенной структуры, в которой хранятся частные члены. Было бы довольно легко обойти, но его можно было бы назвать PRIVATE
или что-то столь же очевидное, чтобы сигнализировать, что он не предназначен для использования извне структуры. А как насчет наследования?