Lacrar uma função Virtual
A sintaxe para lacrar uma função virtual foi alterado de Managed Extensions for C++ para Visual C++.
O __sealed palavra-chave é usada em extensões gerenciadas 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 substituição subseqüente 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.O __sealed palavra-chave indica que uma classe subseqüente herdada da classe derivada não pode fornecer uma substituição do derived::f().
Na sintaxe de novo, sealed é colocado após a assinatura em vez de receberem permissão para aparecer antes do protótipo de função real em qualquer lugar foi permitido anteriormente.Além disso, o uso de sealed requer um uso explícito do virtual palavra-chave também.Isto é, a tradução correta do derived, acima, é o seguinte:
ref class derived: public base {
public:
virtual void f() override sealed;
};
A ausência de virtual palavra-chave nesta instância resulta em erro.Na nova sintaxe, a palavra-chave contextual abstract pode ser usado no lugar da =0 para indicar uma função essencialmente virtual.Isso não era suportado em extensões gerenciadas.Por exemplo:
__gc class base { public: virtual void f()=0; };
pode ser reescrito como
ref class base { public: virtual void f() abstract; };
Consulte também
Referência
autenticada (Extensões de Componentes C++)
Conceitos
Declarações de membro em uma classe ou uma interface (C++/CLI)