Partilhar via


Selando uma função virtual

A sintaxe para selar uma função virtual foi alterada de extensões gerenciadas para C++ a Visual C++.

A palavra-chave de __sealed é usado em extensões gerenciadas para alterar um tipo de referência, recusando a derivação subsequente ele (consulte Declaração de um tipo de classe gerenciado), ou para alterar uma função virtual, recusando substituir subsequente 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 a instância de base::f() com base em correspondência exata de protótipo da função. A palavra-chave de __sealed subsequente indica que uma classe herdada da classe derivada não pode fornecer uma substituição de derived::f().

Na nova sintaxe, sealed é colocada após a assinatura em vez de ser permitido aparecer em qualquer lugar antes que o protótipo real da função, como foi reservado anteriormente. Além disso, o uso de sealed requer um uso explícito da palavra-chave de virtual também. Isto é, a tradução correta de derived, acima, é como segue:

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

A ausência da palavra-chave de virtual resulta nesse caso de um erro. Na nova sintaxe, a palavra-chave contextuais abstract pode ser usado no lugar de =0 para indicar uma função virtual pura. Isso não foi suporte nas 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)