Share via


sealed (Komponentenerweiterungen für C++)

sealed ist ein kontextbezogenes Schlüsselwort für Verweisklassen, das angibt, dass ein virtueller Member nicht überschrieben werden kann oder dass ein Typ nicht als Basistyp verwendet werden kann.

HinweisHinweis

Die Standardsprache ISO C++11 hat das final-Schlüsselwort, das in Visual Studio unterstützt wird.Verwenden Sie final auf Standardklassen und sealed auf Verweisklassen.

Alle Laufzeiten

Syntax

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

Parameter

  • Bezeichner (identifier)
    Der Name der Funktion oder Klasse.

  • Rückgabetyp
    Der von einer Funktion zurückgegebene Typ.

Hinweise

Im ersten Syntaxbeispiel wird eine Klasse versiegelt.Im zweiten Beispiel wird eine virtuelle Funktion versiegelt.

Das sealed-Schlüsselwort ist für systemeigene Ziele und auch während der Windows-Runtime und der CLR (Common Language Runtime) gültig.Weitere Informationen finden Sie unter Überschreibungsspezifizierer und systemeigene Kompilierungen.

Sie können zur Kompilierzeit feststellen, ob ein Typ versiegelt ist, indem Sie das Typmerkmal __is_sealed (type) verwenden.Weitere Informationen finden Sie unter Compilerunterstützung für Typmerkmale (Komponentenerweiterungen für C++).

sealed ist ein kontextbezogenes Schlüsselwort.Weitere Informationen finden Sie unter Kontextbezogene Schlüsselwörter (Komponentenerweiterungen für C++).

Windows-Runtime

Siehe Verweisklassen und Strukturen.

0w2w91tf.collapse_all(de-de,VS.110).gifAnforderungen

Compileroption: /ZW

Common Language Runtime

(Es gibt keine Hinweise für diese Sprachfunktion, die nur für Common Language Runtime gelten.)

0w2w91tf.collapse_all(de-de,VS.110).gifAnforderungen

Compileroption: /clr

0w2w91tf.collapse_all(de-de,VS.110).gifBeispiele

Im folgenden Codebeispiel wird die Auswirkung eines sealed auf einen virtuellen Member dargestellt.

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

Ausgabe

  
  
  

Das folgende Codebeispiel zeigt, wie eine Klasse als versiegelt gekennzeichnet wird.

// 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 {}
};

Siehe auch

Konzepte

Komponentenerweiterungen für Laufzeitplattformen