Udostępnij za pośrednictwem


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