Есть ли способ пометить (во время компиляции) «переопределенные» методы, сигнатуры которых не соответствуют базовой сигнатуре?

По сути, мне нужна функциональность компилятора C # для его ключевого слова override в моем коде C ++.

class Base
{
   virtual int foo(int) const;
};

class Derived : public Base
{
   virtual int foo(int); // wanted to override Base, but forgot to declare it const
};

Как мы все знаем, приведенный выше код компилируется нормально, но дает некоторые странные поведение во время выполнения. Мне бы хотелось, чтобы мой компилятор C ++ поймал мою плохую реализацию с помощью чего-то вроде ключевого слова C # override . Есть ли какие-то ключевые слова, такие как «override», вводимые в C ++, или мы застряли на #define override virtual , чтобы показать наши намерения? (на самом деле, я этого не делаю - я ненавижу использовать препроцессор для «расширения» языка).

7
задан Cœur 22 January 2017 в 13:57
поделиться