我们需要清楚的知道一件事情,就是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*)