Rumah > pembangunan bahagian belakang > C++ > NULL lwn. nullptr: Mengapa Perwakilan Penunjuk Null C Diubah?

NULL lwn. nullptr: Mengapa Perwakilan Penunjuk Null C Diubah?

Linda Hamilton
Lepaskan: 2024-12-16 06:46:15
asal
290 orang telah melayarinya

NULL vs. nullptr: Why Was C  's Null Pointer Representation Changed?

NULL lwn. nullptr: Evolusi Perwakilan Penunjuk Null

Dalam C 0x, makro NULL tradisional telah digantikan dengan nullptr. Perubahan ini bukan semata-mata kosmetik; ia memperkenalkan penambahbaikan ketara pada pengendalian penuding nol bahasa.

Mengapa Penggantian?

NULL, yang ditakrifkan sebagai 0, mewujudkan potensi kesamaran dalam resolusi fungsi terlampau beban. Pertimbangkan kod berikut:

void f(int);
void f(foo *);
Salin selepas log masuk

Jika panggilan ke f(NULL) dibuat, pengkompil tidak pasti sama ada untuk memanggil f(int) atau f(void *). Kekaburan ini diselesaikan dengan menggunakan nullptr, yang mempunyai jenis std::nullptr_t dan boleh ditukar secara tersirat kepada sebarang jenis penunjuk.

Faedah nullptr

Berbanding NULL, nullptr menawarkan beberapa kelebihan apabila bekerja dengan petunjuk:

  • Kejelasan Resolusi Lebihan Beban: Seperti yang dinyatakan di atas, nullptr mengelakkan kekaburan dalam resolusi lebihan fungsi, memastikan tandatangan fungsi yang betul dipilih.
  • Keselamatan Jenis: nullptr tidak boleh ditukar secara tersirat kepada jenis integer atau jenis lain yang tidak berkaitan, menghalang kemungkinan ralat penukaran.
  • Ketekalan: nullptr menyediakan perwakilan konsisten penunjuk nol merentas platform C dan penyusun, menghapuskan potensi isu kompilasi silang.

Atas ialah kandungan terperinci NULL lwn. nullptr: Mengapa Perwakilan Penunjuk Null C Diubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan