Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpOpAbNC 88 of 150 menu
◀ ▶

Нельзя создать объект абстрактного класса в C++

Объект абстрактного класса создать нельзя: в типе остались методы без реализации.

Строка с локальной переменной базового абстрактного типа не проходит компиляцию. Запишем такую попытку для Shape:

class Shape { public: virtual ~Shape() {} virtual int area() const = 0; };

Попробуем создать объект абстрактного класса Shape:

int main() { Shape shape; return 0; }

Компилятор сообщает, что класс абстрактный и экземпляр Shape недопустим. Объект нужно создавать у конкретного потомка:

class Shape { public: virtual ~Shape() {} virtual int area() const = 0; }; class Square : public Shape { public: int side; Square(int side) : side(side) {} int area() const override { return side * side; } };

Создадим объект класса Square и выведем его площадь:

int main() { Square square(5); std::cout << square.area() << "\n"; return 0; }

Попробуйте объявить локальную переменную типа вашего абстрактного Figure и убедитесь, что сборка останавливается. Затем создайте объект Square и выведите площадь.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить