виртуальный деструктор нужен всегда, когда вы используете динамический полиморфизм
Чтобы вызывался нужный деструктор, когда мы, например, удаляем объект из динамической памяти через указатель на базовый класс А если у нас нет виртуальных функций и мы не пользуемся динамическим полиморфизмом соответственно - нужно или нет? я вот к этому веду, не очень понимаю
В таком случае - нет
Если удаляете объект через указатель на базовый класс
Ну а если представить, что мы на большом проекте, и как создатели какого то класса не задумывали, чтобы объект этого класса удаляли через указатель на базу Но проект большой и кто то все таки привел наш класс к базовому и удалил так) Не выгоднее ли всегда делать деструктор виртуальным?
Если делать бездумно, то на ровном месте платим за то что не используем, в данном случае создаёт таблицу виртуальных функций и храним указатель на нее как член данных, хоть и скрытый
Обсуждают сегодня