Bagikan melalui


disegel (C++/CLI dan C++/CX)

disegel adalah kata kunci sensitif konteks untuk kelas ref yang menunjukkan bahwa anggota virtual tidak dapat ditimpa, atau bahwa jenis tidak dapat digunakan sebagai jenis dasar.

Catatan

Bahasa ISO C++11 Standard memperkenalkan kata kunci akhir . Gunakan final pada kelas standar, dan disegel pada kelas ref.

Semua Runtime

Sintaks

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

Parameter

identifier
Nama fungsi atau kelas.

jenis pengembalian
Jenis yang dikembalikan oleh fungsi.

Keterangan

Dalam contoh sintaks pertama, kelas disegel. Dalam contoh kedua, fungsi virtual disegel.

Gunakan kata kunci yang disegel untuk kelas ref dan fungsi anggota virtual mereka. Untuk informasi selengkapnya, lihat Mengambil alih Penentu dan Kompilasi Asli.

Anda dapat mendeteksi pada waktu kompilasi apakah jenis disegel dengan menggunakan __is_sealed(type) sifat jenis. Untuk informasi selengkapnya, lihat Dukungan Pengkompilasi untuk Jenis Sifat.

disegel adalah kata kunci yang sensitif terhadap konteks. Untuk informasi selengkapnya, lihat Kata Kunci Peka Konteks.

Windows Runtime

Lihat Kelas dan struktur Ref.

Persyaratan

Opsi pengkompilasi: /ZW

Runtime Bahasa Umum

(Tidak ada keterangan untuk fitur bahasa ini yang hanya berlaku untuk runtime bahasa umum.)

Persyaratan

Opsi pengkompilasi: /clr

Contoh

Contoh kode berikut ini menunjukkan efek disegel pada anggota virtual.

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

Contoh kode berikutnya menunjukkan cara menandai kelas sebagai disegel.

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

Lihat juga

Ekstensi Komponen untuk .NET dan UWP