__sealed
Publikováno: duben 2016
Poznámka
Toto téma se týká pouze verze 1 spravovaných rozšíření jazyka C++. Tato syntaxe by měla sloužit pouze k udržování kódu verze 1. Viz sealed (C++ Component Extensions) informace o použití ekvivalentní funkce v nové syntaxi.
Zabrání přepsání metody nebo třídy od základní třídy.
Syntaxe
__sealed
class-specifier
__sealed
struct-specifier
__sealed
function-declarator
Poznámky
__sealed Klíčové slovo určuje, že metoda třídy nelze přepsat nebo že třída nemůže být základní třídy.
Při použití __sealed klíčové slovo, mějte na paměti následující body:
A __sealed nelze přepsat virtuální metody.
Pokud metoda nevirtuální člen je označena __sealed, __sealed kvalifikace je ignorován.
A __sealed Metoda nemůže být prázdná.
__Sealed klíčové slovo není povoleno, pokud se používá s __interface – klíčové slovo.
Když třídy (nebo struktury) je označena __sealed, třídy nelze použít jako základní třídu. Příklad:
__sealed __gc class A {
// ...
};
// error: cannot derive from a sealed class
__gc class B : public A { /* ...*/ };
Poznámka
__sealed Klíčové slovo není povoleno, pokud se používá s __abstract klíčové slovo.
Příklad
V následujícím příkladu, zapečetěné virtuální metody (f) je deklarována. Funkce je poté přepsána v main(), způsobí chybu kompilátoru:
// keyword__sealed.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
extern "C" int printf_s(const char*, ...);
__gc struct I
{
__sealed virtual void f()
{
printf_s("I::f()\n");
}
virtual void g()
{
printf_s("I::g()\n");
}
};
__gc struct A : I
{
void f() // C3248 sealed function
{
printf_s("A::f()\n");
}
void g()
{
printf_s("A::g()\n");
}
};
int main()
{
A* pA = new A;
pA->f();
pA->g();
}