Sellar una función virtual

La sintaxis para sellar una función virtual ha cambiado de Extensiones administradas para C++ a Visual C++.

La palabra clave __sealed se utiliza en Extensiones administradas para modificar un tipo de referencia, lo que deshabilita la derivación posterior de él (vea Declaración de un tipo de clase administrada), o para modificar una función virtual, lo que deshabilita el reemplazo posterior del método en una clase derivada.Por ejemplo:

__gc class base { public: virtual void f(); };
__gc class derived : public base {
public:
   __sealed void f();
};

En este ejemplo, derived::f() reemplaza a la instancia base::f() basada en la coincidencia exacta del prototipo de función.La palabra clave __sealed indica que una clase posterior heredada de la clase derivada no puede proporcionar un reemplazo de derived::f().

En la nueva sintaxis, sealed se coloca después de la firma en lugar de que pueda aparecer en cualquier parte antes del prototipo de función real, tal como se permitía anteriormente.Además, el uso de sealed también requiere un uso explícito de la palabra clave virtual.Es decir, la traducción correcta de derived, anteriormente, es como sigue:

ref class derived: public base {
public:
   virtual void f() override sealed;
};

La ausencia de la palabra clave virtual en esta instancia produce un error.En la nueva sintaxis, la palabra clave contextual abstract se puede utilizar en lugar de =0 para indicar una función virtual pura.Esto no estaba admitido en Extensiones administradas.Por ejemplo:

__gc class base { public: virtual void f()=0; };

se puede reescribir como

ref class base { public: virtual void f() abstract; };

Vea también

Referencia

sealed (Extensiones de componentes de C++)

Conceptos

Declaraciones de miembros en una clase o interfaz (C++/CLI)