何時使用 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中文網其他相關文章!