在 multi-level 继承中,如果孙子 parent 已经实现了它,是否需要实现纯虚方法?

In a multi-level inheritance, does a grandchild require to implement a pure virtual method, if its parent has already implemented it?

class A {
  public:  virtual void start() = 0;
};

class B : public A {
  public: void start();
};

class Ba : public B {    
};

我们需要在 Ba 中重新定义 start() 还是 parent 的 B::start() 就足够了?

Parent的start()就够了

你应该为 B 的重新实现使用 override 关键字:

class B : public A {
  public: void start() override;
};

清楚地表明该方法是虚拟方法的实现,并且编译器将强制始终如此,即使将来 class A 发生变化也是如此。

首先你的声明:public: void start();将有问题,因为必须覆盖派生 class 中的纯虚函数,否则派生 class 也将变为抽象。

来到你的实际问题 B 的开头就足够了。