autenticada (Extensões de Componentes C++)
sealed é uma palavra contextual para classes ref que indica que um membro virtual não pode ser substituído ou que um tipo não pode ser usado como um tipo base.
Dica
A ISO C + + 11 linguagem padrão tem o final palavra-chave, que tem suporte no Visual Studio.Use final em classes padrão, e sealed em classes ref.
Todos os Tempos de Execução
Sintaxe
ref class identifier sealed {...};
virtual return-type identifier() sealed {...};
Parâmetros
Identificador
O nome da função ou classe.tipo de retorno
O tipo retornado por uma função.
Comentários
No primeiro exemplo de sintaxe, uma classe é fechada. No segundo exemplo, uma função virtual está lacrada.
O sealed palavra-chave é válido para destinos nativos e também para o Tempo de Execução do Windows e o common language runtime (CLR). Para obter mais informações, consulte especificadores de substituição e compilações nativas.
Você pode detectar no tempo de compilação se um tipo é lacrado usando o __is_sealed (type) característica de tipo. Para obter mais informações, consulte Suporte para Compilador de Traços de Tipo (Extensões de Componentes C++).
sealed é uma palavra-chave contextual. Para obter mais informações, consulte Palavras-chave Contextuais (Extensões de Componentes C++).
Tempo de Execução do Windows
Consulte classes e estruturas Ref.
Requisitos
Opção do compilador: /ZW
Common Language Runtime
(Não há nenhum comentário sobre este recurso de linguagem que se aplica somente ao common language runtime).
Requisitos
Opção do compilador: /clr
Exemplos
Este exemplo de código a seguir mostra o efeito de sealed em um membro virtual.
// sealed_keyword.cpp
// compile with: /clr
interface struct I1 {
virtual void f();
virtual void g();
};
ref class X : I1 {
public:
virtual void f() {
System::Console::WriteLine("X::f override of I1::f");
}
virtual void g() sealed {
System::Console::WriteLine("X::f override of I1::g");
}
};
ref class Y : public X {
public:
virtual void f() override {
System::Console::WriteLine("Y::f override of I1::f");
}
/*
// the following override generates a compiler error
virtual void g() override {
System::Console::WriteLine("Y::g override of I1::g");
}
*/
};
int main() {
I1 ^ MyI = gcnew X;
MyI -> f();
MyI -> g();
I1 ^ MyI2 = gcnew Y;
MyI2 -> f();
}
Saída
O exemplo de código a seguir mostra como marcar uma classe como sealed.
// sealed_keyword_2.cpp
// compile with: /clr
interface struct I1 {
virtual void f();
};
ref class X sealed : I1 {
public:
virtual void f() override {}
};
ref class Y : public X { // C3246 base class X is sealed
public:
virtual void f() override {}
};
Consulte também
Conceitos
Extensões de componente para plataformas de tempo de execução