@Junior007

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

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

Но для чего нужен виртуальный деструктор, к примеру?
  • Вопрос задан
  • 1128 просмотров
Решения вопроса 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, как нам и надо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
CTRL+ Москва
от 250 000 до 320 000 ₽
CTRL+ Москва
от 200 000 до 300 000 ₽
CTRL+ Белград
от 250 000 до 320 000 ₽
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час