小编dim*_*afo的帖子

调用虚拟函数的逻辑尚不清楚(或者它是方法隐藏吗?)

(在msvc2017上测试)

struct AAA
{
    virtual float run(int arg)
    {
        return 5.5f;
    }
};

struct BBB : AAA
{
    virtual bool run(double arg)
    {
        return false;
    }
};

struct CCC : BBB
{
    virtual float run(int arg)
    {
        return 7.7f;
    }

    virtual bool run(double arg)
    {
        return true;
    }
};


CCC c;
BBB* pb = &c;
pb->run(5); // call CCC::run(double arg), WHY?? 
pb->run((int)5); // call CCC::run(double arg), WHY?? 
Run Code Online (Sandbox Code Playgroud)

为什么pb->run(5)只打电话CCC::run(double arg),却不打电话CCC::run(int arg)

具有不同签名的子类的虚拟方法是否与基类的接口重叠?

c++ virtual inheritance overriding class

9
推荐指数
2
解决办法
295
查看次数

标签 统计

c++ ×1

class ×1

inheritance ×1

overriding ×1

virtual ×1