@Junior007

Для чего нужны виртуальные методы?

Для чего нужны виртуальные методы?
Я знаю, что:
1) чисто виртуальный метод делает класс абстрактным
2) Обычная виртуальная функция нужна для правильного вызова перегруженных функций в производных классах

Но для чего нужен виртуальный деструктор, к примеру?
  • Вопрос задан
  • 1098 просмотров
Решения вопроса 2
PavelK
@PavelK
Он не просто нужен, он обязателен, если есть хоть одна виртуальная функция.
Подробнее: https://habrahabr.ru/post/64280/
Ответ написан
Nipheris
@Nipheris Куратор тега C++
Для чего нужны виртуальные методы?

Виртуальные методы - это реализация полиморфизма в 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, как нам и надо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы