Básicamente, quiero la funcionalidad del compilador C# de su palabra clave override
en mi código C++.¿Hay alguna manera de marcar (en tiempo de compilación) métodos "reemplazados" cuyas firmas no coincidan con la firma base?
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
};
Como todos sabemos, el código anterior compilará bien, pero producirá un comportamiento extraño en el tiempo de ejecución. Me encantaría que mi compilador C++ captara mi pobre implementación con algo como la palabra clave override
de C#. ¿Hay alguna palabra clave como "anulación" que se introduce en C++, o estamos atrapados con #define override virtual
para mostrar nuestra intención? (en realidad, no hago esto, odio usar el preprocesador para "extender" el idioma).
disculpas a Naveen - la suya es la respuesta "futura" correcta; sin embargo, para mis necesidades actuales (yo uso VS2005), ¡esto funciona! Marqué esta respuesta como "respondiendo" a mi pregunta, pero +1 a la respuesta de Naveen – franji1