В C++ абстрактный класс – это класс, который имеет хотя бы одну чисто виртуальную функцию. Чисто виртуальные функции объявляются, добавляя к ним ключевое слово virtual
и устанавливая = 0
в конце объявления функции. Абстрактные классы используются в основном для создания интерфейсов, чтобы определить общие свойства и функциональность для группы классов.
Правильное применение абстрактного класса требует следующих шагов:
1. Определите абстрактный класс: Создайте базовый класс с хотя бы одной чисто виртуальной функцией, которую вы хотите, чтобы каждый подкласс реализовал. Например:
class Animal { public: virtual void makeSound() const = 0; };
2. Создайте подклассы: Создайте подклассы, которые наследуются от абстрактного класса и реализуют его чисто виртуальные функции. Например:
class Dog : public Animal { public: void makeSound() const override { cout << "Woof!" << endl; } }; class Cat : public Animal { public: void makeSound() const override { cout << "Meow!" << endl; } };
3. Используйте указатель базового класса: Теперь вы можете использовать указатель базового класса для работы со всеми подклассами. Например:
void makeAnimalSound(const Animal* animal) { animal->makeSound(); } int main() { Animal* animal1 = new Dog(); Animal* animal2 = new Cat(); makeAnimalSound(animal1); // Выводит "Woof!" makeAnimalSound(animal2); // Выводит "Meow!" delete animal1; delete animal2; return 0; }
В этом примере мы определили абстрактный класс Animal
, который имеет чисто виртуальную функцию makeSound()
. Затем мы создали два подкласса, Dog
и Cat
, которые наследуются от Animal
и реализуют функцию makeSound()
. В main()
функции мы создали указатели на Animal
, которые в дальнейшем использовались для вызова функции makeAnimalSound()
, которая принимает указатель на Animal
.