我们需要清楚的知道一件事情,就是0和NULL都不是指针类型,使用它们可以匹配不到指针类型的重载函数。但是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*)