Rumah >pembangunan bahagian belakang >C++ >NULL lwn. nullptr: Mengapa Penunjuk C Null Digantikan?
NULL lwn. nullptr: Menjelaskan Penggantian
Dalam dunia pengaturcaraan C, perubahan ketara berlaku dengan pengenalan nullptr dalam C 0x, menggantikan NULL tradisional. Penggantian ini mencetuskan rasa ingin tahu, menimbulkan persoalan: mengapa perubahan ini dilaksanakan?
Rasional di sebalik Suis
NULL, pada dasarnya, mempunyai dua sifat, bergambar sebagai 'makro' gaya C dan nilai literal yang sah untuk jenis penunjuk. Kekaburan ini boleh menyebabkan kekeliruan, terutamanya dalam panggilan fungsi yang terlebih beban. Pertimbangkan contoh berikut:
void f(int); void f(foo *); f(NULL); // Ambiguous, could be either call
Dengan pengenalan nullptr, kekaburan ini telah diselesaikan. nullptr ialah jenis khusus (std::nullptr_t) yang secara eksplisit menandakan penunjuk nol. Ia boleh ditukar secara tersirat kepada mana-mana jenis penunjuk, memastikan resolusi beban lampau yang tidak jelas.
Selain itu, NULL boleh ditafsirkan secara salah sebagai nilai integer, yang membawa kepada kemungkinan ralat. Menggantikan NULL dengan nullptr telah menghapuskan isu ini, memberikan perbezaan yang lebih jelas antara nilai penunjuk dan integer.
Faedah Menggunakan nullptr
Dalam senario di mana pengendalian penunjuk adalah penting, nullptr menawarkan ketara kelebihan:
Atas ialah kandungan terperinci NULL lwn. nullptr: Mengapa Penunjuk C Null Digantikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!