首页 > 后端开发 > C++ > 什么时候应该在 C 中使用'nullptr”?

什么时候应该在 C 中使用'nullptr”?

Susan Sarandon
发布: 2024-11-09 09:38:02
原创
255 人浏览过

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 的类型推导为 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板