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.
Požadavky
Možnost kompilátoru: /ZW
Modul CLR (Common Language Runtime)
(Žádná informace o této funkci jazyka neplatí pouze pro modul CLR.)
Požadavky
Možnost kompilátoru: /clr
Pří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 {}
};