Sdílet prostřednictvím


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

Klíčové slovo sealed je slovo citlivé na kontext pro třídy ref, které označuje, že virtuální člen nelze přepsat nebo že typ nelze použít jako základní.

[!POZNÁMKA]

Jazyk standardu ISO C++ 11 obsahuje klíčové slovo final podporované v aplikaci Visual Studio.Klíčové slovo final použijte u standardních tříd, klíčové slovo sealed pak u tříd ref.

Všechny moduly runtime

Syntaxe

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

Parametry

  • identifier
    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 (sealed).V druhém příkladu je zapečetěna (sealed) virtuální funkce.

Klíčové slovo sealed je platné pro nativní cíle stejně jako pro architekturu Windows Runtime a modul Common Language Runtime (CLR).Další informace naleznete v tématu týkajícím se specifikátorů přepisu a nativní kompilace.

Pomocí funkce __is_sealed (type) lze zjistit, zda je typ zapečetěn, v době kompilace.Další informace naleznete v tématu Podpora kompilátoru pro typové vlastnosti (C++ Component Extensions).

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

Windows Runtime

Přečtěte si téma týkající se tříd a struktur ref.

0w2w91tf.collapse_all(cs-cz,VS.110).gifPožadavky

Možnost kompilátoru: /ZW

Modul CLR (Common Language Runtime)

(Žádná informace o této funkci jazyka neplatí pouze pro modul CLR.)

0w2w91tf.collapse_all(cs-cz,VS.110).gifPožadavky

Možnost kompilátoru: /clr

0w2w91tf.collapse_all(cs-cz,VS.110).gifPříklady

Následující příklad kódu ukazuje účinek klíčového slova sealed 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();
}

Výsledek

  
  
  

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é

Koncepty

Součást rozšíření pro Runtime platformy