Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mencapai Fungsi `instanceof` Java dalam C : `dynamic_cast` dan Alternatif?

Barbara Streisand
Lepaskan: 2024-11-01 08:13:02
asal
567 orang telah melayarinya

How to Achieve Java's `instanceof` Functionality in C  : `dynamic_cast` and Alternatives?

C Setara dengan Java's Instanceof: dynamic_cast and Alternative Approaches

Java's instanceof operator membenarkan anda menyemak sama ada objek ialah contoh tertentu kelas atau subkelasnya. Dalam C , anda boleh mencapai kefungsian yang serupa menggunakan dynamic_cast.

<code class="cpp">if (NewType* v = dynamic_cast<NewType*>(old)) {
  // Cast succeeded, old is a NewType object
  v->doSomething();
}</code>
Salin selepas log masuk

Pendekatan ini memerlukan maklumat jenis masa jalan (RTTI) untuk didayakan dalam pengkompil anda. Walau bagaimanapun, dynamic_cast boleh datang pada kos prestasi.

Pendekatan Alternatif:

  • Fungsi Maya: Tentukan fungsi maya dalam pangkalan kelas yang dilaksanakan oleh setiap subkelas dengan tingkah laku khususnya. Ini membolehkan anda menyemak jenis objek pada masa jalan dan memanggil fungsi yang sesuai.
  • Corak Pelawat: Cipta kelas pelawat yang mengandungi gelagat khusus untuk subkelas yang berbeza. Dengan melawat objek bersama pelawat, anda boleh melakukan tindakan khusus kepada subkelas tanpa menukar antara muka objek.
  • Semakan Jenis Enum: Tambah enum yang mewakili jenis kelas anda yang mungkin. Semak jenis menggunakan pernyataan suis atau pernyataan bersyarat:
<code class="cpp">switch (old->getType()) {
  case BOX:
    // old is a Box object
    break;
  case SPECIAL_BOX:
    // old is a SpecialBox object
    break;
}</code>
Salin selepas log masuk

Pendekatan ini tidak memerlukan RTTI tetapi tidak sesuai untuk warisan berbilang peringkat.

Nota: Pertimbangkan keperluan pemeriksaan jenis dinamik kerana ia boleh menunjukkan isu reka bentuk. Alternatif seperti fungsi maya atau pendekatan enum mungkin memberikan reka bentuk dan prestasi yang lebih baik dalam banyak kes.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi `instanceof` Java dalam C : `dynamic_cast` dan Alternatif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!