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