Share via


ref class dan ref struct (C++/CLI dan C++/CX)

Kelas ref atau ekstensi struct ref mendeklarasikan kelas atau struct yang masa pakai objeknya dikelola secara otomatis. Ketika objek tidak lagi dapat diakses atau keluar dari cakupan, memori dilepaskan.

Semua Runtime

Sintaks

class_access ref class name modifier : inherit_access base_type {};
class_access ref struct name modifier : inherit_access base_type {};
class_access value class name modifier : inherit_access base_type {};
class_access value struct name modifier : inherit_access base_type {};

Parameter

class_access
(Opsional) Aksesibilitas kelas atau struktur di luar perakitan. Nilai yang mungkin adalah public dan private (private adalah default). Kelas atau struktur berlapis tidak dapat memiliki penentu class_access .

nama
Nama kelas atau struktur.

Pengubah
(Opsional) abstrak dan disegel adalah pengubah yang valid.

inherit_access
(Opsional) Aksesibilitas base_type. Satu-satunya aksesibilitas yang diizinkan adalah public (public adalah default).

base_type
(Opsional) Jenis dasar. Namun, jenis nilai tidak dapat bertindak sebagai jenis dasar.

Untuk informasi selengkapnya, lihat deskripsi khusus bahasa parameter ini di bagian Windows Runtime dan Common Language Runtime.

Keterangan

Aksesibilitas anggota default objek yang dideklarasikan dengan kelas ref atau kelas nilai adalah private. Dan aksesibilitas anggota default objek yang dideklarasikan dengan struktur ref atau struktur nilai adalah public.

Ketika jenis referensi mewarisi dari jenis referensi lain, fungsi virtual di kelas dasar harus secara eksplisit ditimpa (dengan penimpaan) atau tersembunyi (dengan baru (slot baru di vtable)). Fungsi kelas turunan juga harus secara eksplisit ditandai sebagai virtual.

Untuk mendeteksi pada waktu kompilasi apakah jenis adalah kelas ref atau ref struct, atau kelas nilai atau struct nilai, gunakan __is_ref_class (type), __is_value_class (type), atau __is_simple_value_class (type). Untuk informasi selengkapnya, lihat Dukungan Pengkompilasi untuk Jenis Sifat.

Untuk informasi selengkapnya tentang kelas dan struktur, lihat

Windows Runtime

Keterangan

Lihat Kelas dan struktur Ref serta kelas dan struktur Nilai.

Parameter

base_type
(Opsional) Jenis dasar. Ref class atau ref struct dapat mewarisi dari nol atau lebih antarmuka dan nol atau satu jenis ref . Kelas nilai atau struktur nilai hanya dapat mewarisi dari nol antarmuka atau lebih.

Saat Anda mendeklarasikan objek dengan menggunakan kelas ref atau kata kunci struct ref, objek diakses oleh handel ke objek; yaitu, pointer penghitung referensi ke objek. Ketika variabel yang dideklarasikan keluar dari cakupan, pengkompilasi secara otomatis menghapus objek yang mendasar. Ketika objek digunakan sebagai parameter dalam panggilan atau disimpan dalam variabel, handel ke objek benar-benar diteruskan atau disimpan.

Saat Anda mendeklarasikan objek dengan menggunakan kelas nilai atau kata kunci struct nilai, masa pakai objek objek yang dideklarasikan tidak diawasi. Objek ini seperti kelas atau struct C++ standar lainnya.

Persyaratan

Opsi pengkompilasi: /ZW

Runtime Bahasa Umum

Keterangan

Tabel berikut ini mencantumkan perbedaan dari sintaks yang diperlihatkan di bagian Semua Runtime yang khusus untuk C++/CLI.

Parameter

base_type
(Opsional) Jenis dasar. Ref class atau ref struct dapat mewarisi dari nol atau lebih antarmuka terkelola dan nol atau satu jenis ref. Kelas nilai atau struktur nilai hanya dapat mewarisi dari nol atau lebih antarmuka terkelola.

Kata kunci ref class dan ref struct memberi tahu pengkompilasi bahwa kelas atau struktur akan dialokasikan pada tumpuk. Ketika objek digunakan sebagai parameter dalam panggilan atau disimpan dalam variabel, referensi ke objek benar-benar diteruskan atau disimpan.

Kelas nilai dan kata kunci struktur nilai memberi tahu pengkompilasi bahwa nilai kelas atau struktur yang dialokasikan diteruskan ke fungsi atau disimpan dalam anggota.

Persyaratan

Opsi pengkompilasi: /clr

Baca juga

Ekstensi Komponen untuk .NET dan UWP