Compartilhar via


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çãoObservaçã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.

0w2w91tf.collapse_all(pt-br,VS.110).gifRequisitos

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).

0w2w91tf.collapse_all(pt-br,VS.110).gifRequisitos

Opção do compilador: /clr

0w2w91tf.collapse_all(pt-br,VS.110).gifExemplos

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