sealed (rozszerzenia składnika C++)
sealed to kontekstowe słowo kluczowe dla klas ref wskazującą wirtualny element członkowski nie może zostać zastąpione lub że typu nie można użyć jako typ bazowy.
[!UWAGA]
ISO C ++ 11 standardowego języka końcowego słów kluczowych, które są obsługiwane w programie Visual Studio.Użyj final na standardowych klas i sealed w klasach ref.
Wszystkie środowiska wykonawcze
Składnia
ref class identifier sealed {...};
virtual return-type identifier() sealed {...};
Parametry
Identyfikator
Nazwa funkcji lub klasy.Typ zwrotu
Typ zwracany przez funkcję.
Uwagi
W pierwszym przykładzie składni jest zapieczętowany klasę.W drugim przykładzie jest zapieczętowany wirtualnego funkcji.
sealed Słowo kluczowe jest nieprawidłowa dla celów macierzystego, a także do Środowisko wykonawcze systemu Windows i plików wykonywalnych języka (wspólnego CLR).Aby uzyskać więcej informacji, zobacz zastąpić Specyfikatory i macierzystego kompilacje.
Wykrywa w czasie kompilacji, czy typem jest zapieczętowany przy użyciu __is_sealed (type) cechy typu.Aby uzyskać więcej informacji, zobacz Obsługa cech typu w kompilatorze (C++ Component Extensions).
sealed jest słowem kluczowym kontekstowa.Aby uzyskać więcej informacji, zobacz Kontekstowe słowa kluczowe (C++ Component Extensions).
Środowisko wykonawcze systemu Windows
Zobacz klasy Ref i strukturach.
Wymagania
Opcja kompilatora: /ZW
Środowisko uruchomieniowe języka wspólnego
(Nie ma żadnych uwag dla tej funkcji języka, które mają zastosowanie do wszystkich programów środowiska uruchomienia wspólnego języka.)
Wymagania
Opcja kompilatora: /clr
Przykłady
Ta Poniższy przykładowy kod przedstawia wynik sealed wirtualnego elementu członkowskiego.
// 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();
}
Dane wyjściowe
Następny przykładowy kod przedstawia sposób oznaczyć klasę jako zamknięte.
// 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 {}
};
Zobacz też
Koncepcje
Component Extensions dla platform środowiska uruchomieniowego