Я подозреваю, что код, который вы просматриваете, был написан для демонстрации того, как указатели на базовые классы могут использоваться с объектами производных классов.Нет, указатели не нужны для функциональности этого учебного упражнения.Фактически, это, вероятно, причина, по которой эта функциональность была выбрана.Поскольку вы видите, как выполнить то же самое без указателей, вам будет проще связать указатели с тем, что вы уже знаете.
Ключевые точки обучения, которые я вижу в этом упражнении:
- Один и тот же тип указателя (
fruit *
) может указывать на объекты разных типов (apple
или pear
). - При использовании указателя на базовый класс вы можете получить доступ к членам базового класса.
- При использовании указателя на базовый класс вы не можете получить доступ к производным членам класса.(Подразумевается пропуском; сравните, что сделано с
k
с тем, что сделано с fruit1
.)
Вам нужно будет перейти к более сложным урокам, чтобы учиться, когда указатели более полезнычем прямой доступ к объектам (вероятно, после того, как eat()
превращен в виртуальную функцию).А пока просто изучите, как можно выполнить одну и ту же задачу разными способами.
(Конечно, вы можете получить эту информацию здесь, но этот код выглядит как часть серии. Продолжение этой серии может бытьлучший способ учиться.)