0

私は次のものを持っています:

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 であり、ppchar*の値を nullptr に設定しても型は変更されず、その func(char* も変更されません)が呼び出されます-受け入れられた回答でも説明されているように。

4

1 に答える 1