Lacrar uma função virtual
A sintaxe para lacrar uma função virtual foi alterado de gerenciado Extensions para C++ para Visual C++ 2008.
The __sealed palavra-chave é usada em gerenciado Extensions para modificar qualquer um tipo de referência, não permitindo subseqüente derivação dele (consulte Declaração de um tipo de classe gerenciada), ou modificar uma função virtual, não permitindo substituindo subseqüentes do método em uma classe derivada. Por exemplo:
__gc class base { public: virtual void f(); };
__gc class derived : public base {
public:
__sealed void f();
};
Neste exemplo, derived::f() substitui o base::f() instância com base na correspondência exata do protótipo de função. The __sealed palavra-chave indica que uma classe subseqüente herdada da classe derivada não pode fornecer uma substituir do derived::f().
Na sintaxe de novo, sealed é colocado após a assinatura em vez de sendo podem ser exibidas em qualquer lugar antes do protótipo de função real, sistema autônomo foi permitido anteriormente. Além disso, o uso de sealed requer um uso explícito da virtual palavra-chave sistema autônomo bem. Ou seja, a conversão correta de derived, acima, é o seguinte:
ref class derived: public base {
public:
virtual void f() override sealed;
};
A ausência do virtual palavra-chave nesta instância resultados em erro. Na sintaxe de novo, a palavra-chave contextual abstract pode ser usado no lugar das =0 para indicar uma função essencialmente virtual. Não havia suporte para isso dentro de gerenciado Extensions.Por exemplo:
__gc class base { public: virtual void f()=0; };
pode ser regravado sistema autônomo
ref class base { public: virtual void f() abstract; };
Consulte também
Conceitos
Declarações de membro dentro de uma classe ou interface