Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 {}
};