Mengakses Kaedah Kelas melalui Penunjuk Kelas Tidak Sah
Sesetengah senario pengaturcaraan melibatkan mengakses kaedah kelas melalui penunjuk kelas nol. Pertimbangkan contoh berikut:
class ABC { public: int a; void print() { cout << "hello" << endl; } }; int main() { ABC* ptr = NULL; ptr->print(); return 0; }
yang mengejutkan, kod ini berjaya dijalankan tanpa sebarang ralat. Bagaimanakah ini boleh berlaku?
Gelagat Tidak Ditakrifkan
Dalam C , memanggil fungsi ahli menggunakan penuding yang tidak merujuk objek yang sah membentuk tingkah laku yang tidak ditentukan. Ini bermakna bahawa tingkah laku program tidak dapat diramalkan dan boleh berbeza-beza secara meluas.
Pengecualian dalam Kes ini
Dalam kod yang disediakan, fungsi ahli print() berlaku kepada tidak menggunakan penunjuk ini, yang berfungsi sebagai rujukan kepada objek. Situasi pelik ini membolehkan kod berjalan seolah-olah tanpa isu.
Walau bagaimanapun, adalah penting untuk menyedari bahawa bergantung pada tingkah laku yang tidak ditentukan itu berbahaya dan boleh membawa kepada masalah yang tidak dijangka dalam senario yang berbeza.
Atas ialah kandungan terperinci Mengapa Memanggil Kaedah Kelas dengan Penunjuk Null Kadang-kadang Berfungsi dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!