5.5.4. Реализация наследования
Наследование в языке 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).
Назад | Содержание | Вперед