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