#cpp #деструктор
Класс наследует интерфейс, в котором деструктор объявлен виртуальным. Надо ли в своем классе явно объявлять деструктор виртуальным? Чтобы обеспечить вызов деструктора при работе через интерфейс. class MyInterface{ public: virtual ~MyInterface(){}; ... } class MyClass : public MyInterface{ public: ~MyClass(); //или же необходимо virtual ~MyClass(); ... }
Ответы
Ответ 1
Нет, не надо. Он уже и так виртуальный. Начиная с 11-го стандарта, можно в данном случае использовать ключевое слово override. В таком случае, компилятор проверит, является ли деструктор базового класса (или переопределяемый метод в общем случае) виртуальным - и вы сможете отловить ситуацию, когда забыли сделать деструктор базового класса виртуальным.Ответ 2
Нет, достаточно написать virtual в базовом классе. Но чтобы точно документировать - для себя - лично я предпочитаю писать это virtual. Тогда вам не придется искать базовый класс, чтобы убедиться, что какая-то функция - виртуальна.
Комментариев нет:
Отправить комментарий