基本类中的C 相同的方法,但具有不同的参数

C++ same methods in base classes but with different arguments

本文关键字:参数 方法      更新时间:2023-10-16

我有以下程序,该程序不编译:

class Interface1
{
    virtual void f() = 0;
};
class Interface2
{
    virtual void f(int i) = 0;
};
class Interface3 : public Interface1,
                   public Interface2
{};
class C : public Interface3
{
    virtual void f() {}
    virtual void f(int i) {}
};
int main()
{
    Interface3* inter = new C();
    inter->f(); // Error
}

怎么了?这是否意味着这些方法是否具有不同的参数类型并不重要?

错误:成员" f"的请求是模棱两可的
注意:候选人是:虚拟void Interface1 :: f()
...
注意:虚拟void Interface2 :: f(int i)

问题是,在同一范围内未定义两个基本类型中f的两个定义,因此它们不会超载。Interface3中有两个名为f的单独函数,也没有选择一个或另一个规则。