关于指针初始化为nullptr与NULL的区别
本人的理解:
在C++中,大体上,nullptr与NULL可以通用,不过nullptr被定义得更加具体一些,就是指空指针常量,而NULL则被定义为0,这个0在一般情况下可以代表空指针常量,但是当出现函数重载的情况时,由于NULL = 0,所以会将NULL看做是int型,产生二义性,因此引入nullptr,用来纯粹代表空指针常量
举例:
#include <stddef.h> void foo(int) {} // #1 void foo(char*) {} // #2 int main() { foo(NULL); // 调用#1还是#2? }当传入的是NULL时,调用的当然就是#1(NULL被当做int型)
当传入nullptr时,调用的妥妥的就是#2
所以,可以说nullptr比NULL更加精确。