nullptr vs NULL: Mengapa Penggantian?
Dalam C , kata kunci nullptr telah menggantikan NULL untuk aplikasi berasaskan penunjuk. Walaupun kedua-dua pilihan menandakan penunjuk nol, nullptr menawarkan kelebihan yang menjadikannya pilihan pilihan.
Mengapa Menggunakan nullptr Daripada NULL?
Sebab utama untuk menggantikan NULL dengan nullptr adalah jenis keselamatan. NULL ialah makro yang ditakrifkan sebagai (kosong )0, yang mempunyai jenis (kosong ). Keserasian jenis luas ini boleh membawa kepada tingkah laku yang tidak disengajakan, terutamanya dalam senario yang melibatkan fungsi terlampau beban.
Sebagai contoh, pertimbangkan pengisytiharan fungsi berikut:
Jika anda memanggil f dengan penuding NULL, pengkompil mungkin tidak dapat menentukan fungsi yang lebih beban untuk dilaksanakan. Ini kerana NULL boleh ditukar secara tersirat kepada jenis penuding, membenarkan ia sepadan dengan bebanan kedua.
Kelebihan nullptr
nullptr, sebaliknya, mempunyai jenis std::nullptr_t yang berbeza. Apabila digunakan dalam resolusi lebihan, ia hanya sepadan dengan contoh std::nullptr_t atau jenis penunjuk. Ini menghapuskan kekaburan yang disebabkan oleh keserasian jenis NULL yang lebih luas.
Selain itu, nullptr memastikan bahawa niat untuk menggunakan penuding nol dinyatakan dengan jelas dalam kod.
Oleh itu, menggunakan nullptr atas NULL menyediakan keselamatan jenis yang lebih tinggi, menghalang tingkah laku yang tidak disengajakan dalam panggilan fungsi yang terbeban dan meningkatkan kod kejelasan.
Atas ialah kandungan terperinci nullptr lwn. NULL: Mengapa C Shift to Type Safety?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!