Всякий раз, когда я вижу C "класс" (любая структура, которая предназначена для использования при доступе к функциям, которые принимают указатель на нее как первый аргумент), я вижу, что они реализованы следующим образом:
typedef struct
{
int member_a;
float member_b;
} CClass;
CClass* CClass_create();
void CClass_destroy(CClass *self);
void CClass_someFunction(CClass *self, ...);
...
И в этом случае CClass_create
всегда malloc
это память и возвращает указатель на это.
Всякий раз, когда я вижу, что new
появляется на С++ без необходимости, обычно это сбивает программистов на С++ с ума, но эта практика кажется приемлемой в C. Что дает? Есть ли какая-то причина, почему так называемые "классы классов", выделенные кучей, настолько распространены?