有2个相同的功能。一个使用带const关键字的参数,另一个-不带。
void A(const int* p);
void A(int* p);
int main()
{
int x;
A(&x);
return 0;
}
void A(const int* p)
{
cout << "2" << endl;
}
void A(int* p)
{
cout << "1" << endl;
}
是否功能超载?
是。这两个函数的名称相同,但参数不同,因此它们是重载。
为什么没有
const
的函数会被称为我的情况?
因为x
不是const
。尝试使用指向const int
的指针,您将获得另一个重载:
const int y;
A(&y);
我认为这是最初问题的变体:摘自Stroustrup的C ++之行
template<typename T>
class C {
...
public:
...
T& operator[](int i);
const T& operator[](int i) const;
}
据我所知,第二种方法将针对不希望修改此对象的情况。
我只是想知道编译器是否能够在每种情况下准确地猜测到这一点。