Aracılığıyla paylaş


sealed (C++/CLI ve C++/CX)

sealed , bir sanal üyenin geçersiz kılınamayacağını veya bir türün temel tür olarak kullanılamadığını gösteren, başvuru sınıfları için bağlama duyarlı bir anahtar sözcüktür.

Not

ISO C++11 Standart dili son anahtar sözcüğünü kullanıma sunar. Standart sınıflarda final ve başvuru sınıflarında korumalı kullanın.

Tüm Çalışma Zamanları

Sözdizimi

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

Parametreler

identifier
İşlevin veya sınıfın adı.

dönüş türü
bir işlev tarafından döndürülen tür.

Açıklamalar

İlk söz dizimi örneğinde, bir sınıf korumalıdır. İkinci örnekte, bir sanal işlev korumalıdır.

Başvuru sınıfları ve sanal üye işlevleri için sealed anahtar sözcüğünü kullanın. Daha fazla bilgi için bkz . Geçersiz Kılma Tanımlayıcıları ve Yerel Derlemeler.

Derleme zamanında tür özelliğini kullanarak bir türün __is_sealed(type) korumalı olup olmadığını algılayabilirsiniz. Daha fazla bilgi için bkz . Tür Özellikleri için Derleyici Desteği.

sealed , bağlama duyarlı bir anahtar sözcüktür. Daha fazla bilgi için bkz . Bağlama Duyarlı Anahtar Sözcükler.

Windows Çalışma Zamanı

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

Gereksinimler

Derleyici seçeneği: /ZW

Ortak Dil Çalışma Zamanı

(Bu dil özelliği için yalnızca ortak dil çalışma zamanı için geçerli olan hiçbir açıklama yoktur.)

Gereksinimler

Derleyici seçeneği: /clr

Örnekler

Aşağıdaki kod örneği, korumalı öğesinin sanal üye üzerindeki 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();
}
X::f override of I1::f
X::f override of I1::g
Y::f override of I1::f

Sonraki kod örneğinde bir sınıfın korumalı olarak nasıl işaretlendiği gösterilir.

// 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.

.NET ve UWP İçin Bileşen Uzantıları