sealed (Estensioni del componente C++)

sealed è una parola chiave sensibile al contesto per le classi di riferimento che indica che un membro virtuale non può essere sottoposto a override, o che un tipo non può essere utilizzato come tipo di base.

[!NOTA]

Il linguaggio standard ISO C++11 contiene la parola chiave final, supportata in Visual Studio.Si può utilizzare final sulle classi standard e sealed sulle classi di riferimento.

Tutti i runtime

Sintassi

ref class identifier sealed {...};
virtual return-type identifier() sealed {...};

Parametri

  • identifier
    Nome della funzione o della classe.

  • return-type
    Il tipo restituito da una funzione.

Note

Nel primo esempio di sintassi, la classe è sealed.Nel secondo esempio, una funzione virtuale è sealed.

La parola chiave sealed è valida per le piattaforme native e anche per Windows Runtime e Common Language Runtime (CLR).Per ulteriori informazioni, vedere la pagina relativa a identificatori di override e compilazioni native.

È possibile rilevare in fase di compilazione se un tipo è sealed utilizzando il tratto di tipo __is_sealed (type).Per ulteriori informazioni, vedere Supporto del compilatore per tratti di tipo (Estensioni del componente C++).

sealed è una parola chiave sensibile al contesto.Per ulteriori informazioni, vedere Parole chiave sensibili al contesto (Estensioni del componente C++).

Windows Runtime

Vedere la pagina relativa alle classi e struct di riferimento.

0w2w91tf.collapse_all(it-it,VS.110).gifRequisiti

Opzione del compilatore: /ZW

Common Language Runtime

(Non esistono note per questa funzionalità del linguaggio che si applichino solo a Common Language Runtime).

0w2w91tf.collapse_all(it-it,VS.110).gifRequisiti

Opzione del compilatore: /clr

0w2w91tf.collapse_all(it-it,VS.110).gifEsempi

L'esempio di codice seguente illustra l'effetto di sealed su un membro virtuale.

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

Output

  
  
  

Nell'esempio di codice riportato di seguito si mostra come contrassegnare una classe come 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 {}
};

Vedere anche

Concetti

Estensioni componenti per le piattaforme runtime