C++ C+中重载的指针问题+;?

C++ C+中重载的指针问题+;?,c++,pointers,overloading,C++,Pointers,Overloading,指针为重载解析提供了一些特殊问题 比如说, void f(int* x) { ... } void f(char* x) { ...} int main() { f(0); } 调用f(0)有什么问题?如何修复f(0)的函数调用?f((int*)0)或f((char*)0) 但是如果你发现自己在这样做,我会再看看你的设计。f((int*)0)或f((char*)0) 但如果您发现自己正在这样做,我会再看一眼您的设计。铸造它,或者根本不使用它: f((int*)0); 铸造它,或者根本

指针为重载解析提供了一些特殊问题

比如说,

void f(int* x) { ... }
void f(char* x) { ...}
int main()
{
    f(0);
}

调用f(0)有什么问题?如何修复f(0)的函数调用?

f((int*)0)
f((char*)0)

但是如果你发现自己在这样做,我会再看看你的设计。

f((int*)0)
f((char*)0)


但如果您发现自己正在这样做,我会再看一眼您的设计。

铸造它,或者根本不使用它:

f((int*)0);

铸造它,或者根本不使用它:

f((int*)0);

调用f(0)的错误在于分辨率不明确。这两个重载函数都使用一个指针,在本例中,该指针只能通过cast解析

f((int*)0)

根据您在此处尝试执行的操作,还有其他不含糊的选项。

调用f(0)的错误在于分辨率含糊不清。这两个重载函数都使用一个指针,在本例中,该指针只能通过cast解析

f((int*)0)

根据你在这里所做的,还有其他的选择是不含糊的。< /P>是因为字符被表示为数字还是?因为你不能从零中推断出类型,这意味着C++中的空指针。所以它可以是空int*或空char*。编译器无法确定是哪一个。从技术上讲,它是“空指针常量”,而不是“空指针”。所有指针(包括空指针)都具有指针类型。空指针常数是积分常数。是因为字符表示为数字还是?因为不能从C++中推断零类型是空指针。所以它可以是空int*或空char*。编译器无法确定是哪一个。从技术上讲,它是“空指针常量”,而不是“空指针”。所有指针(包括空指针)都具有指针类型。空指针常量是整型常量。