Sdílet prostřednictvím


sealed (rozšíření komponent C++)

sealed je kontextová klíčové slovo pro ref třídy, které označuje, že virtuální člena nelze přepsat, nebo že typu nelze použít jako základní typ.

[!POZNÁMKA]

ISO C ++ 11 standardní jazyk má konečné klíčové slovo, které je podporováno v sadě Visual Studio.Použití final na standardních tříd a sealed v třídách ref.

Všechny moduly runtime

Syntaxe

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

Parametry

  • identifikátor
    Název funkce nebo třídy.

  • Přejít zpět type
    Typ vrácený funkcí.

Poznámky

V prvním příkladu syntaxe je zapečetěná třídu.V druhém příkladu je zapečetěná virtuální funkce.

sealed Klíčové slovo je platný pro nativní cíle a také prostředí Windows Runtime a modul common language runtime (CLR).Další informace naleznete v tématu Přepsat specifikátory a nativní kompilace.

V době kompilace můžete zjistit, zda je typ zapečetěná pomocí __is_sealed (type) typu výšku.Další informace naleznete v tématu Podpora kompilátoru pro typové vlastnosti (C++ Component Extensions).

sealed je kontextová klíčové slovo.Další informace naleznete v tématu Kontextově závislá klíčová slova (rozšíření komponent C++).

prostředí Windows Runtime

Podívejte se na téma Ref třídy a struktur.

Požadavky

Možnost kompilátoru: /ZW

Common Language Runtime

(Nejsou k dispozici žádné informace o této funkci jazyka, které platí pouze pro modul Common Language Runtime.)

Požadavky

Možnost kompilátoru: /clr

Příklady

Tento příklad kódu ukazuje účinek sealed na virtuální člena.

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

Výstup

   
              
              
              
                 
              
              
              
                

Další příklad kódu ukazuje, jak lze označit třídu jako zapečetěná.

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

Viz také

Koncepty

Rozšíření komponent pro platformy běhového prostředí