Memanggil Kaedah Kelas dengan Penunjuk Kelas Null
Apabila bekerja dengan C , pembangun mungkin menghadapi situasi di mana mereka perlu menggunakan kaedah kelas melalui kelas null petunjuk. Walau bagaimanapun, adalah penting untuk memahami kemungkinan akibat daripada tindakan sedemikian.
Pertimbangkan coretan kod berikut:
class ABC { public: int a; void print() { cout << "hello" << endl; } }; int main() { ABC *ptr = NULL; ptr->print(); return 0; }
Dalam coretan ini, kelas ABC mempunyai fungsi ahli print(). Fungsi utama cuba memanggil kaedah ini pada ptr penuding nol.
Mengapa Ini Nampaknya Berjaya Dilaksanakan?
Tanpa diduga, coretan kod kelihatan berjalan tanpa ranap . Ini kerana kaedah print() tidak menggunakan penunjuk ini, yang biasanya merujuk kepada contoh objek semasa. Akibatnya, kekurangan objek yang sah tidak serta-merta menyebabkan ralat.
Kelakuan Tidak Ditakrifkan
Walau bagaimanapun, adalah penting untuk menekankan bahawa memanggil kaedah kelas melalui nol penunjuk kelas memanggil tingkah laku yang tidak ditentukan. Ini bermakna sebarang hasil adalah mungkin, termasuk ranap program, hasil yang salah atau pelaksanaan yang kelihatan betul.
Mengapa Gelagat Tidak Ditakrifkan?
Dalam C , penunjuk kelas nol tidak ' t mewakili objek yang sah. Apabila cuba mengakses fungsi ahli melalui penunjuk sedemikian, pengkompil tidak dapat menentukan objek yang dirujuk oleh penuding. Kekurangan maklumat ini membawa kepada tingkah laku yang tidak ditentukan kerana pengkompil tidak mempunyai cara untuk menyelesaikan rujukan.
Kesimpulan
Walaupun coretan kod yang dipersoalkan mungkin dilaksanakan tanpa masalah yang jelas, adalah penting untuk mengelak daripada memanggil kaedah kelas melalui penunjuk kelas nol. Tindakan sedemikian boleh mengakibatkan tingkah laku yang tidak dapat diramalkan dan tidak boleh dipercayai, yang berpotensi membawa kepada kegagalan perisian.
Atas ialah kandungan terperinci Bolehkah Memanggil Kaedah Kelas dengan Penunjuk Null dalam C Membawa kepada Gelagat Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!