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