0%

Cplusplus-新特性

新的C++ 11/14/17引入了一些新特性,相应的编译器对这些新特性的支持也逐渐完善了,这篇文章会逐步记录一些相关内容,方便以后查阅。

nullptr

关于nullptr的讨论基本上是比较容易的,网上讨论也非常多,具体可以参考两篇博客:

https://www.cnblogs.com/porter/p/3611718.html
https://blog.csdn.net/qq_18108083/article/details/84346655

这里总结一下就是,在C++里面,将NULL宏定义成了0

1
2
3
4
5
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif

导致如果如果存在如下重载函数

1
2
void func(void* ptr);
void func(int val);

那么调用时,NULL优先识别成 0 而不是 void *,这在编码时候就容易产生二义性。nullptr的出现就是为了解决这个问题。