私は次のものを持っています:
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)
p==nullptr で func(nullptr) を呼び出さず、代わりに func(const char*) を呼び出すのはなぜですか?
[編集]
応答に基づく私の結論は、 func(...) はパラメーターの型に基づいて呼び出され、 type であり、p
pchar*
の値を nullptr に設定しても型は変更されず、その func(char* も変更されません)が呼び出されます-受け入れられた回答でも説明されているように。