class CheckConst
{
public:
void func(int* p)
{
cout << "func called";
}
void func(const int* p)
{
cout << "const func called";
}
};
int main()
{
int* p = new int(5);
CheckConst obj;
obj.func(p);
}
上述函数重载工作正常。但为什么编译器没有抱怨,这两个函数重载对于 obj.func(p) 的函数调用都是有效的。如果我从类中删除任一函数,代码仍然有效。
编译器如何区分调用哪一个?