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

Bilakah Anda Harus Menggunakan `nullptr` dalam C ?

Susan Sarandon
Susan Sarandonasal
2024-11-09 09:38:02251semak imbas

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);

Dalam ketiadaan nullptr, panggilan berikut akan membawa kepada kekaburan:

f(NULL);  //which function will be called?

Walau bagaimanapun, menggunakan nullptr menjelaskan penggunaan fungsi yang dimaksudkan:

f(nullptr); //first function is called

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

Pengkhususan separa berikut boleh ditakrifkan untuk nullptr:

template<>
struct something<nullptr_t, nullptr>>{};  //partial specialization for nullptr

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

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

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:
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