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ı.
Gereksinimler
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.)
Gereksinimler
Derleyici seçeneği: /clr
Ö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 {}
};