码迷,mamicode.com
首页 > 其他好文 > 详细

NULL和nullptr的区别

时间:2015-10-31 18:44:41      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:null和nullptr的区别


指定 std::nullptr_t 类型的 null 指针常量,该类型可转换为任何原始指针类型。尽管您可以使用关键字 nullptr 而不包含任何标头,但如果您的代码使用类型 std::nullptr_t,则您必须通过包含标头 <cstddef> 来定义该类型。请避免将 NULL 或零 (0) 用作 null 指针常量;nullptr 不仅不易被误用,并且在大多数情况下使用效果更好。例如,给定 func(std::pair<const char *, double>),那么调用 func(std::make_pair(NULL, 3.14)) 会导致编译器错误。宏NULL将扩展为0,以便调用make_pair(0, 3.14) 将返回 std::pair<int, double>,此结果不可转换为 func() 的 std::pair<const char *, double> 参数类型。调用 func(std::make_pair(nullptr, 3.14)) 将会成功编译,因为make_pair(nullptr, 3.14) 返回 pair<std::nullptr_t, double>,此结果可转换为 pair<const char *, double>。


 

class XYCombineRecord: public Node
{
public:
 XYCombineRecord():
  m_imgIndex(0)
  ,m_displayMode(DISPLAY_MODE_NORMAL)
  ,callback(NULL){};   //编译失败
 CREATE_FUNC(XYCombineRecord);
 std::function<void(XYCombineRecord* ,PlayLayer*)> callback;

 

class XYCombineRecord: public Node
{
public:
 XYCombineRecord():
  m_imgIndex(0)
  ,m_displayMode(DISPLAY_MODE_NORMAL)
  ,callback(nullptr){}; //编译成功
 CREATE_FUNC(XYCombineRecord);
 std::function<void(XYCombineRecord* ,PlayLayer*)> callback;


本文出自 “每天进步一点点” 博客,转载请与作者联系!

NULL和nullptr的区别

标签:null和nullptr的区别

原文地址:http://568464209.blog.51cto.com/7726521/1708332

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!