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>
Pendekatan ini memerlukan maklumat jenis masa jalan (RTTI) untuk didayakan dalam pengkompil anda. Walau bagaimanapun, dynamic_cast boleh datang pada kos prestasi.
Pendekatan Alternatif:
<code class="cpp">switch (old->getType()) { case BOX: // old is a Box object break; case SPECIAL_BOX: // old is a SpecialBox object break; }</code>
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!