函数重载与常量

Function Overloading with const

本文关键字:常量 重载 函数      更新时间:2023-10-16
struct A
{
    void fn(double a) const {}
    void fn(int a){}
};
int main()
{
    A().fn(1.);
}

对于上述函数,为什么编译器会产生歧义;两种类型都不同。

为什么你只想将int传递给一个非常量A

每个成员函数有两个参数,thisa 。因此,您需要一个用于thisconst A*double用于a,或非常量A*int

而且调用不完全匹配任何一种选择,因为您有非常量Adouble。所以编译器既可以将A()转换为const A,也可以double转换为int。它无法决定哪个是最好的。