Всегда ли необходимо ключевое слово «переопределить»? Если нет, то каковы лучшие практики?
Это никогда не «необходимо». Переопределение работает с этим ключевым словом или без него. Он предназначен только для того, чтобы помочь вам предотвратить такие проблемы, как опечатки и т.д.
Главный вопрос: я знаю, что приведенный выше код у меня работает. Но у меня проблема в том, что мне в основном приходится «копировать» сигнатуру чистой виртуальной функции из базового класса в мой производный класс. Что произойдет, если я не знаю, какие чистые виртуальные функции есть в базовом классе?
Вы не можете этого не знать. Чтобы унаследовать от класса, компилятор требует полного определения этого класса, что обычно означает, что у вас есть #include
d (и у вас есть доступ к этому определению).
Моя реализация выше подразумевает, что Я должен знать все чистые виртуальные функции, доступные в базовом классе. Я попытался получить доступ к чистой виртуальной функции с помощью Mode :: scope и LocalMode :: scope, но в Visual Studio я просто получил несколько сообщений об ошибках (я считаю, что эти сообщения об ошибках не имеют отношения к этому вопросу).
Вы ищете механизм отражения? Его нет в C ++, поэтому вы не можете, например, получить список функций для данного класса. Если вы хотите вызвать чистую виртуальную функцию из другой функции, это не сработает, потому что, ну, они чисто виртуальные.
Некоторые плагины / Intellisense?
То есть явно off-topi c для StackOverflow, но есть много IDE для C ++, у вас не должно возникнуть проблем с их поиском.