Для чего нужны виртуальные методы?
Виртуальные методы - это реализация полиморфизма в C++.
Обычная виртуальная функция нужна для правильного вызова перегруженных функций в производных классах
Переопределённых, а не перегруженных.
Но для чего нужен виртуальный деструктор, к примеру?
Объект тоже может разрушаться полиморфно:
class shape {
public:
virtual ~shape() { } // без virtual будет вызван деструктор класса shape
};
class circle : shape {
public:
virtual ~shape() { } // c virtual вызовется деструктор именно того класса, объект которого вы разрушаете
....
};
shape* c = new circle();
.....
delete c; // вызов деструктора. С virtual вызовется деструктор circle, а не shape, как нам и надо.