我有以下内容:
void func(const char *p) { std::cout << p << "\n"; }
void func(std::nullptr_t p) { std::cout << "<null>\n"; }
int main()
{
func("test");
char *p=nullptr;
func(p);
func(nullptr);
return 0;
}
func("test")总是被调用。带有func(p)注释的,func(nullptr)被调用,但是当func(p)没有注释时,它们都不被调用。为什么不?为什么func(p)with p==nullptr 不调用 func(nullptr),而是调用 func(const char*) 呢?
[编辑]
根据回复,我的结论是 func(...) 是根据参数的类型调用的,并且p是 type char*,将 p 的值设置为 nullptr 不会更改类型,也不会更改 func(char* ) 被称为 - 正如接受的答案也解释的那样。