Mencapai Kefungsian "instanceof" dalam C
Operator "instanceof" dalam Java membenarkan pembangun menyemak sama ada objek tergolong dalam kelas tertentu atau antara muka. C tidak mempunyai persamaan yang tepat, tetapi terdapat kaedah untuk mencapai kefungsian yang serupa.
Pemutus Dinamik dengan Sokongan RTTI
Pendekatan pilihan melibatkan pemutus dinamik menggunakan maklumat jenis masa jalan (RTTI ):
<code class="cpp">if (NewType* v = dynamic_cast<NewType*>(old)) { // old was safely casted to NewType v->doSomething(); }</code>
Perhatikan bahawa kaedah ini memerlukan sokongan RTTI dalam pengkompil.
Menggunakan Kaedah getType()
Pendekatan alternatif, yang tidak memerlukan RTTI, adalah untuk mentakrifkan kaedah getType() dalam kelas asas:
<code class="cpp">if (old->getType() == BOX) { Box* box = static_cast<Box*>(old); // Do something box specific }</code>
Walau bagaimanapun, pendekatan ini mempunyai had dalam mengendalikan pelbagai peringkat warisan.
Pertimbangan
Adalah penting untuk mempersoalkan keperluan tuangan dinamik sebelum menggunakannya. Reka bentuk yang buruk boleh menyebabkan penggunaannya yang berlebihan. Pertimbangkan untuk menggunakan fungsi maya atau pelawat untuk pendekatan yang lebih berorientasikan objek.
Selain itu, pendekatan kaedah getType() datang dengan kelemahan prestasi berbanding pemutus dinamik.
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Mencapai Kefungsian \'instanceof\' Java dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!