Mencari Jenis Objek dalam C
Jenis objek boleh ditentukan menggunakan dynamic_cast. Kaedah ini secara dinamik menghantar datum daripada satu penuding atau jenis rujukan kepada yang lain, mengesahkan kesahihan pelakon semasa masa jalan.
Penggunaan:
Untuk menghantar ke jenis penuding:
TYPE* dynamic_cast<TYPE*>(object);
Untuk menghantar ke rujukan jenis:
TYPE& dynamic_cast<TYPE&>(object);
Keputusan:
Maklumat Jenis Waktu Jalan (RTTI)
Dynamic_cast bergantung pada RTTI, iaitu hanya tersedia untuk kelas polimorfik (iaitu, kelas yang mempunyai sekurang-kurangnya satu kaedah maya). Dalam praktiknya, ini bukanlah had yang ketara, kerana kebanyakan kelas asas mempunyai pemusnah maya untuk pembersihan yang betul dalam kelas terbitan.
Contoh:
Berikut ialah contoh menggunakan dynamic_cast untuk menyemak sama ada objek adalah jenis B:
class A {}; class B : public A { public: void b_function() {} }; void func(A& obj) { B* b_ptr = dynamic_cast<B*>(&obj); if (b_ptr != nullptr) { b_ptr->b_function(); // Object is of type B } else { std::cout << "Object is not of type B" << std::endl; } }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Jenis Objek pada Runtime dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!