Нет. Вы не должны.
... и не должны, потому что это ненужное дублирование без пользы. Если вы это сделаете, по крайней мере, используйте ключевое слово override
, чтобы избежать несоответствия в объявлениях.
Представьте, что вы изменили базу на
class AInterface {
public:
virtual ~AInterface() = default;
virtual void a(int) = 0;
};
и забыли обновить BInterface
, тогда ой, теперь у вас есть void a()
in BInterface
, который не был предназначен. Однако, если у вас есть override
:
class BInterface : public AInterface{
public:
virtual void a() override = 0;
virtual void b() = 0;
virtual void otherb() = 0;
};
Вы получите ошибку компилятора, потому что после вышеупомянутого рефакторинга void a()
не переопределяет метод из его базы.