使用"常量"的函数重载

Function overload using 'Const'

本文关键字:重载 函数 常量 使用      更新时间:2023-10-16

有两个相同的函数。一个参数带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;
}
  1. 是函数重载吗?
  2. 为什么没有const的函数将被称为我的情况?

是函数重载吗?

是的。这两个函数具有相同的名称但不同的参数,因此它们是重载的。

为什么没有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;
}
根据我的理解,第二个方法将针对不打算修改this-object的情况。

我只是想知道编译器是否能够准确地猜测在每个相关的情况下…