Абстрактные классы нужны для реализации других классов с помощью наследования.
Из абстрактных классов нельзя вызывать методы и создавать объекты.
classweapon{public:virtualvoidshoot()=0;// абстрактный метод без реализации};
Нам уже знаком класс weapon , от которого мы наследуем метод shoot() для разных классов оружия.
Однако сам по себе класс weapon является абстрактным и не должен иметь конкретную реализацию метода и так же не логичным было бы иметь возможность создавать от него объекты.