Rumah > pembangunan bahagian belakang > C++ > Bilakah Anda Harus Menggunakan `nullptr` dalam C ?

Bilakah Anda Harus Menggunakan `nullptr` dalam C ?

Susan Sarandon
Lepaskan: 2024-11-09 09:38:02
asal
304 orang telah melayarinya

When Should You Use `nullptr` in C  ?

Bila Menggunakan nullptr

Dalam kod C, penunjuk boleh dimulakan kepada nilai setara secara konsep: nullptr, NULL, atau 0. Sementara ini nilai semua menunjukkan penunjuk nol, nullptr menawarkan beberapa kelebihan.

Invokasi Fungsi Terlebih Beban

Pertimbangkan fungsi terlampau beban berikut:

void f(char const *ptr);
void f(int v);
Salin selepas log masuk

Dalam ketiadaan nullptr, panggilan berikut akan membawa kepada kekaburan:

f(NULL);  //which function will be called?
Salin selepas log masuk

Walau bagaimanapun, menggunakan nullptr menjelaskan penggunaan fungsi yang dimaksudkan:

f(nullptr); //first function is called
Salin selepas log masuk

Pengkhususan Templat untuk nullptr

Selain itu, nullptr membenarkan pengkhususan templat khusus untuk penunjuk nol. Pertimbangkan templat berikut:

template<typename T, T *ptr>
struct something{};                     //primary template
Salin selepas log masuk

Pengkhususan separa berikut boleh ditakrifkan untuk nullptr:

template<>
struct something<nullptr_t, nullptr>>{};  //partial specialization for nullptr
Salin selepas log masuk

Ini membolehkan mencipta lebihan khusus untuk mengendalikan argumen nullptr:

template<typename T>
void f(T *ptr);   //function to handle non-nullptr argument

void f(nullptr_t); //an overload to handle nullptr argument!!!
Salin selepas log masuk
Salin selepas log masuk

Type Deduction for nullptr

Dalam templat, jenis nullptr disimpulkan sebagai nullptr_t. Ini memudahkan kod, seperti yang dilihat di bawah:

template<typename T>
void f(T *ptr);   //function to handle non-nullptr argument

void f(nullptr_t); //an overload to handle nullptr argument!!!
Salin selepas log masuk
Salin selepas log masuk

Atas ialah kandungan terperinci Bilakah Anda Harus Menggunakan `nullptr` dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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