Partilhar via


Lacrar uma função Virtual

A sintaxe para lacrar a uma função virtual foi alterado a partir de Managed Extensions for C++ para Visual C++ 2010.

O __sealed palavra-chave é usada no Managed Extensions para modificar qualquer um tipo de referência, não permitindo derivação subseqüente dele (consulte Declaração de um tipo de classe gerenciada), ou modificar uma função virtual, não permitindo subseqüentes a substituição do método em uma classe de derivada. For example:

__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 nova sintaxe, 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 da virtual palavra-chave como bem. Ou seja, 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 nos resultados dessa instância, em um erro. Na sintaxe de novo, a palavra-chave contextual abstract pode ser usado no lugar da =0 para indicar uma função virtual pura. Isso não era suportado dentro de Managed Extensions. For example:

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

pode ser regravado como

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

Consulte também

Referência

sealed

Conceitos

Declarações de membro dentro de uma classe ou Interface