何时使用 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 的类型推导为 nullptr_t。这简化了代码,如下所示:
template<typename T> void f(T *ptr); //function to handle non-nullptr argument void f(nullptr_t); //an overload to handle nullptr argument!!!
以上是什么时候应该在 C 中使用'nullptr”?的详细内容。更多信息请关注PHP中文网其他相关文章!