Конечно, вот пример кода, демонстрирующий иерархию классов на C++:
#include <iostream> // Базовый класс "Животное" class Animal { public: void eat() { std::cout << "Animal is eating" << std::endl; } virtual void makeSound() { std::cout << "Animal is making a sound" << std::endl; } }; // Подкласс "Собака", наследуется от класса "Животное" class Dog : public Animal { public: void makeSound() override { std::cout << "Dog says: Woof woof!" << std::endl; } }; // Подкласс "Кошка", наследуется от класса "Животное" class Cat : public Animal { public: void makeSound() override { std::cout << "Cat says: Meow meow!" << std::endl; } }; int main() { Animal* animal = new Animal(); Dog* dog = new Dog(); Cat* cat = new Cat(); animal->makeSound(); dog->makeSound(); cat->makeSound(); delete animal; delete dog; delete cat; return 0; }
В этом примере мы создали базовый класс Animal
и два подкласса: Dog
и Cat
, которые наследуются от класса Animal
. Метод makeSound()
переопределен в каждом подклассе для вывода соответствующего звука.
Код можно улучшить, добавив виртуальный деструктор в базовый класс Animal
, чтобы правильно удалять объекты при использовании оператора delete
. Также можно добавить проверку на nullptr
, чтобы убедиться, что указатель не указывает на нулевой адрес перед вызовом метода класса.
Надеюсь, что данное пояснение помогло вам понять основы иерархии классов на C++. Если у вас есть еще вопросы, не стесняйтесь задавать!