LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

Имеется struct, содержащий ссылки на функции (заданы конечно определения функций), а реализация их может быть разная для разных «драйверов».

ну да. это ооп, сделанное ручками. динамический полиморфизм через фукциональные переменные в обьекте.

от виртуальных функций с++ это несколько отличается, поскольку адреса реализаций виртуальных методов в с++ хранятся в общей для всего класса структуре. что во-первых уменьшает размер обьекта, а во вторых - все обьекты данного класса будут иметь одинаковые реализации вирт. методов.

то есть плюсовый обьект переведенный в сишный будет выглядеть как:

struct SomeClassWithVirtualFUnctions {
  this_class_type_descriptor *_type_descriptor; ///это указатель на дескриптор класса с таблицей вирт методов
  
  int _user_field0;
  int _user_field1;
...
}

вот кстати вроде неплохой гайд по совр. си. говорю сразу, что лишь быстро пробежал глазами, вроде толково. предлагается к читке.

https://github.com/AnthonyCalandra/modern-c-features

зы. нет..это несколько не тот док, что я хотел, но тоже полезный. там был какаой-то док, как красиво(как ужж можно в рамках си) эмулировать ооп с++.

Исходная версия alysnix, :

Имеется struct, содержащий ссылки на функции (заданы конечно определения функций), а реализация их может быть разная для разных «драйверов».

ну да. это ооп, сделанное ручками. динамический полиморфизм через фукциональные переменные в обьекте.

от виртуальных функций с++ это несколько отличается, поскольку адреса реализаций виртуальных методов в с++ хранятся в общей для всего класса структуре. что во-первых уменьшает размер обьекта, а во вторых - все обьекты данного класса будут иметь одинаковые реализации вирт. методов.

то есть плюсовый обьект переведенный в сишный будет выглядеть как:

struct SomeClassWithVirtualFUnctions {
  this_class_type_descriptor *_type_descriptor; ///это указатель на дескриптор класса с таблицей вирт методов
  
  int _user_field0;
  int _user_field1;
...
}

вот кстати вроде неплохой гайд по совр. си. говорю сразу, что лишь быстро пробежал глазами, вроде толково. предлагается к читке.

https://github.com/AnthonyCalandra/modern-c-features