Наследование в языке C реализуются через указатели. Рассмотрим,
например, конкретные подклассы Box и Circle абстрактного класса Shape. На языке
C их можно представить следующим образом: struct Shape
{
struct ShapeClass* class;
Length x;
Length y;
};
struct Box
{
struct BoxClass* class;
Length x;
Length y;
Length width;
Length height;
};
struct Circle
{
struct CircleClass* class;
Length x;
Length y;
Length radius;
};
Указатель на структуры Box или Circle можно передать функции,
ожидающей указатель на Shape, так как первые несколько членов структур Box и
Circle идентичны первым членам структуры Shape (это позволяет привести тип
указателя на структуру Box или Circle привести к типу указателя на структуру
Shape).
|