nullptr:C++不允许直接将void*隐式转换到其他类型,没有隐式转换的C++只好
将NULL定义为0,但会出现新的问题,C++中的重载特性会发生混乱
为了区分NULL、0从而引入的关键字,nullptr的类型为nullptr_t
能够隐式的转换为任何指针或成员指针类型,也能进行相等或不相等进行比较;

#include <iostream>void test1()
{char *ptr = NULL;// NULL 不等于0if (std::is_same<decltype(NULL), decltype(0)>::value){std::cout<<"NULL == 0"<<std::endl;}// NULL不等于(void*)0if (std::is_same<decltype(NULL), decltype((void*)0)>::value){std::cout<<"NULL == (void*)0"<<std::endl;}// NULL不等于nullptrif (std::is_same<decltype(NULL), decltype(nullptr)>::value){std::cout<<"NULL == nullptr"<<std::endl;}}void fool(char *ptr)
{std::cout<<"char* ptr"<<std::endl;
}void fool(int i)
{std::cout<<"int i"<<std::endl;
}
void test2()
{//  fool(NULL);//报错,C++没有隐式类型转换,将NULL定义为0,但是重载函数都符合fool(0);//  调用fool(int i);fool(nullptr);//    调用 fool(char *ptr);
}
int main()
{test1();test2();return 0;
}

C++特性nullptr相关推荐

  1. C++ 11 新特性 nullptr 学习

    nullptr 出现的目的是为了替代 NULL. 在某种意义上来说,传统 C++ 会把 NULL.0 视为同一种东西,这取决于编译器如何定义 NULL,有些编译器会将 NULL 定义为 ((void* ...

  2. 大厂面试八股文——C++

    文章目录 可变参数-printf的实现原理 编译语言和解释语言 C++空指针调用成员函数 std::move 移动语义 std::move的实现 完美转换 malloc函数底层实现 被free回收的内 ...

  3. 计网/数据库面试题(更新中ing~~)

    计网/数据库面试题(更新中ing~~) <计算机网络> 1. OSI七层模型.设备 (传输层)协议的多路分用和复用 2. TCP/IP四层模型==五层模型 (传输层)TCP和UDP协议对比 ...

  4. LES06 :C++线程与智能指针

    C++线程与智能指针 文章目录 C++线程与智能指针 线程 C++11线程 POSIX线程 线程属性 分离线程 调度策略与优先级 线程同步 条件变量 智能指针 shared_ptr weak_ptr ...

  5. 基础巩固|C++面试八股文

    写在前面:本文主要是自己用来巩固C++基础用的,内容源自我的一位同学rzj的八股总结.内容很多,后面会加上目录之类的,方便查找,如果有错误,欢迎及时在评论区或私信指出. 1. 1. 1. 简述下C++ ...

  6. C++新特性探究(一):nullptr

      nullptr 出现的目的是为了替代 NULL.在某种意义上来说,传统 C++ 会把 NULL.0 视为同一种东西,这取决于编译器如何定义 NULL,有些编译器会将 NULL 定义为 ((void ...

  7. 【C++】C++11 新特性(auto,decltype,nullptr,快速遍历,【Lambda表达式详解】)

    C++11 重要新特性 auto decltype nullptr 快速遍历与数组初始化 Lambda 表达式 Lambda 应用 外部变量捕获 mutable auto 可以从初始化表达式中推断出变 ...

  8. Effective Modern C++ 第三章第一节,C++新特性:初始化、nullptr、alias别名、enum

    Chapter 3 part 1, Moving to Modern C++ Item 7: Distinguish between () and {} when creating objects 几 ...

  9. C++11新特性之nullptr

    在C++11之前的C++98/03我们使用空都是NULL关键字,后来C++11之后新增了nullptr关键字来表示空.那么有了NULL还要弄个nullptr出来干什么呢?是不是吃太饱了? 为了来剖析这 ...

最新文章

  1. 【swjtu】数据结构实验8_平衡二叉排序树
  2. matlab高斯滤波跟中值滤波区别,matlab图像滤波处理代码讲解 均值滤波 中值滤波 高斯滤波...
  3. python模块之email: 电子邮件编码解码 (一、解码邮件)
  4. 180°舵机的使用步骤
  5. OpenGL进阶演示样例1——动态画线(虚线、实线、颜色、速度等)
  6. Php连接及读取和写入mysql数据库的常用代码
  7. pytorch 实现MLP(多层感知机)
  8. HTML5 中定位问题
  9. 工具类与工具函数 —— fatal.h
  10. Linux学习记录--ACL权限控制
  11. linux里命令pkg-config工具的使用
  12. for循环与foreach的性能比较
  13. 《IS-IS网络设计解决方案》一导读
  14. 3月28日 simulink学习(一)
  15. 爬取《全职高手之巅峰荣耀》的豆瓣影评,分析漫改电影的优劣好坏
  16. 深度学习中需要的矩阵计算
  17. 上海市建筑标准规范合集
  18. TCMalloc 安装和使用
  19. Find命令搭配atime/ctime/mtime时的日期写法
  20. iOS导航栏颜色,任务栏颜色

热门文章

  1. 域名lesening.com 价格看涨
  2. SQL Server子查询
  3. SQL Server 数据库之备份和恢复数据库
  4. 纯lua脚本搜索算法优化
  5. 精选最新20个优秀源码下载网站排行
  6. Windows10的WiFi功能不能用的解决办法
  7. linux 中 sigaction 函数详解
  8. Reactjs相关实例学习【Reactjs】
  9. angular联想搜索
  10. Android 11 应用适配 兼容性