代码之家  ›  专栏  ›  技术社区  ›  Destructor

在多级继承中重写没有重写函数的中间派生类

c++
  •  0
  • Destructor  · 技术社区  · 7 年前

    class Base {
    public : 
    virtual void method1();
    
    ///
    }
    
    class Derived1 : Base {
    public : 
    void method2();
    }
    
    class Derived2 : Derived1 {
    public :
    void method1();
    }
    

    我可以使用多态性访问Derived2::method1()吗?

    Base* myClass = new Derived2();
    
    myClass->method1();
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Some programmer dude    7 年前

    一旦父类将函数标记为 virtual ,这种“虚拟性”依然存在。一旦创建了一个函数,不管您有多少继承级别,或者是否有中间类不重写函数 函数将 总是 .

    Derived2::method1 通过多态性。你展示的代码应该可以正常工作。