autenticada (Extensões de Componentes C++)
sealed é uma palavra-chave contextual para classes de referência 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.
Observação |
---|
O idioma Padrão ISO C++11 tem a palavra-chave final, que tem suporte no Visual Studio.Use final em classes padrão e sealed em classes de referência. |
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 é fechada.
A palavra-chave sealed é válida para destinos nativos e também para Tempo de Execução do Windows e o CLR (common language runtime).Para obter mais informações, consulte Especificadores de substituição e compilações nativas.
Você pode detectar em tempo de compilação se um tipo é selado usando a característica do tipo __is_sealed (type).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 de referência.
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 código exemplo 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 fechada.
// 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