Rumah > Java > javaTutorial > Bagaimana untuk Mencapai Setara C bagi Operator \'instanceof\' Java?

Bagaimana untuk Mencapai Setara C bagi Operator \'instanceof\' Java?

Linda Hamilton
Lepaskan: 2024-11-03 21:51:30
asal
912 orang telah melayarinya

How to Achieve the C   Equivalent of Java's

Cara Mencapai C Equivalent of Java's instanceof

Dalam Java, pengendali "instanceof" membenarkan anda untuk menentukan sama ada objek kepunyaan a kelas atau antara muka tertentu. Dalam C , terdapat beberapa kaedah untuk mencapai kefungsian ini.

Penghantaran Dinamik dengan RTTI

Satu pendekatan menggunakan penghantaran dinamik dengan Maklumat Jenis Masa Jalan (RTTI) didayakan. Ini memerlukan anda memasukkan pengepala yang diperlukan:

<code class="cpp">#include <typeinfo>
#include <cxxabi.h></code>
Salin selepas log masuk

Dan kemudian anda boleh melakukan lakonan dinamik menggunakan:

<code class="cpp">if(NewType* v = dynamic_cast<NewType*>(old)) {
   // old was safely casted to NewType
   v->doSomething();
}</code>
Salin selepas log masuk

Perhatikan bahawa pendekatan ini memerlukan sokongan RTTI untuk didayakan dalam pengkompil anda .

Fungsi Maya

Kaedah lain ialah menggunakan fungsi maya. Anda boleh menentukan fungsi maya dalam kelas asas dan mengatasinya dalam kelas terbitan. Kemudian, anda boleh menyemak jenis dinamik objek dengan memanggil fungsi mayanya:

<code class="cpp">class Base {
public:
    virtual void doSomething() {}
};

class Derived : public Base {
public:
    void doSomething() override {}
};

...

if(auto* derived = dynamic_cast<Derived*>(old)) {
    derived->doSomething();
}</code>
Salin selepas log masuk

Suis Jenis

Akhir sekali, anda boleh menggunakan suis jenis untuk menentukan jenis dinamik sesuatu objek. Pendekatan ini bergantung pada kelas type_info:

<code class="cpp">if(old.IsSameAs(typeid(NewType))) {
    // old was safely casted to NewType
    NewType* v = static_cast<NewType*>(old);
    v->doSomething();
}</code>
Salin selepas log masuk

Pertimbangan

Walaupun kaedah ini menawarkan fungsi yang serupa dengan pengendali "instanceof" Java, adalah penting untuk mengingati pemutus dinamik dan pemeriksaan jenis boleh dikenakan penalti prestasi. Adalah disyorkan untuk mempertimbangkan menggunakan pendekatan alternatif seperti fungsi maya atau suis jenis untuk prestasi yang lebih baik dalam aplikasi kritikal.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Setara C bagi Operator \'instanceof\' Java?. 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