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).

Назад | Содержание | Вперед