IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 条款8:优先选用nullptr而非0或NULL -> 正文阅读

[C++知识库]条款8:优先选用nullptr而非0或NULL

字面常量0的类型是int而非指针,当C++在只能使用指针的语境中发现一个0,它也会把它勉强解释为空指针。C++的基本观点还是0的类型为int,而非指针;从实际效果来说,以上结论对于NULL也成立(标准允许各个实现给予NULLint的整数类型(如long))。

C++98中,这样的基本观点可能在指针和整形之间i进行重载时可能会发生意外。

void f(int);
void f(bool);
void f(void *);

f(0);	// 调用f(in)
f(NULL);// 可能会通不过编译,但一般会调用f(int)

f(NULL)的不确定性是NULL的类型在实现中的余地的一种反映。比如,假设NULL的定义为0L,那么f(NULL)调用就有多意性了。因为从longint,从longbool,还有从0Lvoid *的类型转换被视为同样好的。指导原则是不要在指针类型和整型之间做重载
nullptr的优点在于、它不具备整型类型。也不具备指针类型,但你可以把它想成一种任意类型的指针;
调用重载函数f时传入nullptr会调用void*那个重载版本,因为nullptr无法视作任何一种类型

f(nullptr);	//调用的是f(void*)这个重载版本

使用nullptr而非0NULL就避免了重载决议中的意外,也提升了代码的清晰性,尤其在在涉及auto变量时:

auto result = finRecord(/*实参*/)
if (result == 0) {
//...
}

如果你刚好不知道findeRecord的返回值类型的话,那么result是指针类型还是整数类型就不清楚了;但是如果你看到的是下面这段代码:

auto result = finRecord(/*实参*/)
if (result == nullptr) {
//...
}

这里没有多义性了:result必然具备指针类型

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:19:22  更:2021-08-01 14:19:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/1 17:42:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码