首頁 > 後端開發 > C++ > 什麼時候應該在 C 中使用'nullptr”?

什麼時候應該在 C 中使用'nullptr”?

Susan Sarandon
發布: 2024-11-09 09:38:02
原創
249 人瀏覽過

When Should You Use `nullptr` in C  ?

何時使用 nullptr

在 C 程式碼中,指標可以初始化為概念上等效的值:nullptr、NULL 或 0。值都表示空指針,nullptr 有幾個優點。

重載函數呼叫

考慮以下重載函數:

void f(char const *ptr);
void f(int v);
登入後複製

在缺少nullptr,以下呼叫會導致歧義:

f(NULL);  //which function will be called?
登入後複製
在缺少nullptr,以下調用會導致歧義:

f(nullptr); //first function is called
登入後複製
但是,使用nullptr 可以澄清預期的函數呼叫:

nullptr 的模板專業化

template<typename T, T *ptr>
struct something{};                     //primary template
登入後複製
此外,nullptr 允許專門針對空指針進行模板專門化。考慮以下範本:

template<>
struct something<nullptr_t, nullptr>>{};  //partial specialization for nullptr
登入後複製
可以為nullptr 定義以下部分專業化:

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

void f(nullptr_t); //an overload to handle nullptr argument!!!
登入後複製
登入後複製
這可以建立用於處理nullptr 參數的專用重載:

nullptr 的型別推導

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

void f(nullptr_t); //an overload to handle nullptr argument!!!
登入後複製
登入後複製
在範本中,nullptr 的型別推導為nullptr_t。這簡化了程式碼,如下所示:

以上是什麼時候應該在 C 中使用'nullptr”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板