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
257 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!

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