函数重载时出现歧义错误

ambiguity error in function overloading

本文关键字:歧义 错误 重载 函数      更新时间:2023-10-16
class overload                         
{                                      
  void func(int x)
   {
     cout<<"pass by valuen";
   }
  public:void func(int &x)
    {
      cout<<"pass by referencen";  
    }
};
main()
   {
      overload b1; 
      b1.func(10);
   }

我将一个函数设为私有,另一个同名函数设为公共。现在在主要只有一个函数是可见的,那么为什么编译器给出歧义错误,当我试图访问这个函数??

在检查函数的访问权限之前进行重载解析。这是无关的,一个是private -重载解析仍然是模糊的。

重载解析在访问控制之前完成。编译器查找名称为func()的所有函数,并尝试解析为最可行的重载。可见性在这个阶段没有被考虑。