Aracılığıyla paylaş


mühürlü (C++ Bileşen Uzantıları)

sealed bir sanal üyenin geçersiz kılınamayacağını, ya da bir türün taban tür olarak kullanılamayacağını belirtmek için başvuru sınıfları için bağlama duyarlı bir anahtar sözcüktür.

[!NOT]

ISO C++11 Standart dili final anahtar sözcüğüne sahiptir, ve Visual Studio içinde desteklenir.Standart sınıflar için final, ve başvuru sınıfları için sealed kullanın.

Tüm Çalışma Zamanları

Sözdizimi

ref class identifier sealed {...};
virtual return-type identifier() sealed {...};

Parametreler

  • identifier
    İşlevin ya da sınıfın adı.

  • return-type
    Bir işlev tarafından döndürülen tür.

Notlar

İlk sözdizimi örneğinde, bir sınıf mühürlüdür.İkinci örnekte, bir sanal işlev mühürlüdür.

sealed anahtar sözcüğü yerel hedefler, ve ayrıca Windows Çalışma Zamanı ve ortak dil çalışma zamanı (CLR) için geçerlidir.Daha fazla bilgi için, bkz. Geçersiz Kılma Tanımlayıcıları ve Yerel Derlemeler.

Bir türün mühürlü olup olmadığını çalışma zamanında __is_sealed (type) tür niteliğini kullanarak algılayabilirsiniz.Daha fazla bilgi için bkz. Tür Özellikleri için Derleyici Desteği (C++ Bileşen Uzantıları).

sealed bağlama duyarlı bir anahtar sözcüktür.Daha fazla bilgi için bkz. Bağlama Duyarlı Anahtar Sözcükler (C++ Bileşen Uzantıları).

Windows Çalışma Zamanı

Bkz. Başvuru sınıfları ve yapıları.

0w2w91tf.collapse_all(tr-tr,VS.110).gifGereksinimler

Derleyici seçeneği: /ZW

Ortak Dil Çalışma Zamanı

(Bu dil özelliğinin yalnızca ortak dil çalışma zamanı uygulanan açıklamaları yoktur.)

0w2w91tf.collapse_all(tr-tr,VS.110).gifGereksinimler

Derleyici seçeneği: /clr

0w2w91tf.collapse_all(tr-tr,VS.110).gifÖrnekler

Aşağıdaki kod örneği bir sanal üye üzerinde sealed anahtar sözcüğünün etkisini gösterir.

// 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();
}

Çıktı

  
  
  

Sonraki kod örneği bir sınıfı nasıl mühürlü olarak işaretleyebileceğinizi gösterir.

// 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 {}
};

Ayrıca bkz.

Kavramlar

Çalışma platformları için bileşen uzantıları