Compartilhar via


__abstract

 

Publicado: abril de 2016

Dica

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

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

Sintaxe

__abstract 
class-specifier
__abstract 
struct-specifier

Comentários

O __abstract palavra-chave declara que a classe de destino só pode ser usada como uma classe base de outra classe. Aplicando __abstract para uma classe ou estrutura não implica que o resultado é uma classe ou estrutura GC.

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

Dica

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

Exemplo

No exemplo a seguir, a Derived classe é derivada de uma classe base abstrata (Base). Instanciação é tentada em ambos, mas apenas Derived for 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();
}