NULL和nullptr的区别:
想要知道NULL和nullptr有什么区别?首先要知道在C++和C中NULL和nullptr的分别表示的是什么:
#if defined(__cplusplus)
# define NULL 0 // C++中使用0作为NULL的值
#else
# define NULL ((void *)0) // C中使用((void *)0)作为NULL的值
#endif
那为什么在C中NULL表示的是void*,而在C++中表示的却是0。这就牵扯到语言类型的问题了。因为C++是强类型语言,void*是不能隐式转换成其他类型的指针的。
为什么C++要引入nullptr?
下面是NULL在C++中存在的问题
我们是希望NULL进入的是参数为void*的函数,但是却进入了int类型为参数的函数。
所以引入了nullptr。nullptr的引入就是为了解决C++中这一二义性的问题,使用nullptr来代替空指针。