总第28篇
在接下来的几篇文章中,我将系统介绍并总结C++11/14中的一些新特性,供大家学习参考。对于C++17/20中有少许的新特性,目前还太前沿,一般在开发过程中还用不到,用到了再介绍学习。欢迎大家学习批评指正。
1.nullptr
nullptr
的出现是为了替代NULL
,在传统C++中会将NULL、0
视为同一种东西,这取决于编译器如何定义NULL
,有些编译器会将NULL
定义为((void *)0)
,有些则会直接定义为0
。C++不允许将void *
隐式转换为其它类型,但若NULL
被定义为((void *)0)
,那么当编译char *ch = NULL
时,NULL
只好被定义为0
,而这依然会产生问题,将会导致重载特性发生混乱,例如:
void foo(char *);
void foo(int);
若NULL
又被定义为0
,那么foo(NULL)
将会去调用foo(int)
,从而导致混乱。
为了解决这个问题,C++11中引入了nullptr
关