__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();
}