c ++:派生类重写虚函数(误解)

时间:2016-02-29 11:11:51

标签: c++

请考虑以下代码:

class Base
{
public:
    virtual void f1( int var, bool val ) {/*some implementation*/}
    virtual void f1( int var, int val )  {/*some implementation*/}
};

class Derived : public Base
{
public:
    void f1( int var, int val )  {/*new implementation*/}
};

如果我创建一个新的派生对象:

Derived* newObj = new Derived();

并致电f1:

newObj->f1(5, true);

为什么它会调用Derived的f1,将bool转换为int?很明显,参数不匹配,并且在基类中有一个更合适的候选者(加入int和bool的基函数)。为什么从基础覆盖重载的虚函数会隐藏其他实现?

0 个答案:

没有答案