《Effective Modern C++》学习笔记之条款八:优先选用nullptr,而非0或NULL

0就是int类型,在一些场合下,勉勉强强可以解释为空指针,但记住这是不得已场景下才会这么做。NULL在不同系统中会有不同的类型实现,有的是int,有的是long,其本质也是一个整型。但是nullptr就不一样了,虽然它的本质是std::nullptr_t,但是因为其可以隐式转换到所有类型的裸指针型别。所以在函数重载时,nullptr可以完美匹配指针型别的重载函数:

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

f(0);   //匹配到void f(int)

f(NULL);   //匹配到void f(int)

f(nullptr);   //匹配到void f(void*)

要点速记

  • 相对于0或者NULL,优先选用nullptr
  • 避免在整型和指针型别之间重载

 

猜你喜欢

转载自blog.csdn.net/Chiang2018/article/details/114187946
今日推荐