sealed (C++/CLI a C++/CX)

sealed je kontextově citlivé klíčové slovo pro třídy ref, které indikuje, že virtuální člen nelze přepsat nebo že typ nelze použít jako základní typ.

Poznámka

Standardní jazyk ISO C++11 zavedl konečné klíčové slovo. Použijte konečné u standardních tříd a zapečetěné u tříd ref.

Všechny moduly runtime

Syntaxe

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

Parametry

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

return-type
Typ vrácený funkcí.

Poznámky

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

Pro třídy ref a jejich virtuální členské funkce použijte zapečetěné klíčové slovo. Další informace naleznete v tématu Přepsání specifikátorů a nativních kompilací.

Při kompilaci můžete zjistit, zda je typ zapečetěn pomocí __is_sealed(type) vlastnosti typu. Další informace naleznete v tématu Podpora kompilátoru pro vlastnosti typu.

sealed je klíčové slovo citlivé na kontext. Další informace najdete v tématu Klíčová slova citlivá na kontext.

prostředí Windows Runtime

Viz třídy a struktury Ref.

Požadavky

Možnost kompilátoru: /ZW

CLR (Common Language Runtime)

(Pro tuto funkci jazyka neexistují žádné poznámky, které platí pouze pro modul CLR (Common Language Runtime).)

Požadavky

Možnost kompilátoru: /clr

Příklady

Následující příklad kódu ukazuje účinek zapečetěné na virtuální člen.

// 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();
}
X::f override of I1::f
X::f override of I1::g
Y::f override of I1::f

Následující příklad kódu ukazuje, jak označit třídu jako zapečetěnou.

// 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é

Přípony komponent pro .NET a UPW