Partilhar via


__abstract

Dica

Este tópico se aplica somente à versão 1 de Managed Extensions for C++.Esta sintaxe só deve ser usada para manter o código da versão 1.Consulte Resumo (Visual C++) para obter informações sobre como usar a funcionalidade equivalente na nova sintaxe.

Declara uma classe gerenciada que não pode ser instanciada diretamente.

__abstract class-specifier 
__abstract struct-specifier

Comentários

A palavra-chave __abstract declara que a classe de destino só pode ser usada como uma classe base a partir de outra classe. Aplicar __abstract a uma classe ou estrutura não implica que o resultado é uma classe ou estrutura __gc.

Diferente da noção de C++ de uma classe base abstrata, uma classe com a palavra-chave __abstract pode definir as funções de membro.

Dica

A palavra-chave __abstract não é permitida quando usada com a palavra-chave __value ou __sealed e é redundante quando usada com a palavra-chave __interface.

Exemplo

No exemplo a seguir, a classe Derived é derivada de uma classe base abstrata (Base). A instanciação é tentada nas duas, mas somente Derived é bem-sucedida.

// keyword__abstract.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>

__abstract __gc class Base {
   int BaseFunction() {
      return 0;
   }
};

__gc class Derived: public Base {};

int main() {
   Base* MyBase = new Base();   // C3622 can't BAse is abstract
   Derived* MyDerived = new Derived();
}