История изменений
Исправление 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;
...
}
вот кстати вроде неплохой гайд по совр. си. говорю сразу, что лишь быстро пробежал глазами, вроде толково. предлагается к читке.