Abstract类继承具有相同函数名的另一个抽象类

use*_*947 4 c++ virtual inheritance class abstract

 class subscriber
 {
 public:
      virtual void update() = 0;
 }

 class entity : public subsriber
 {
 public:
      virtual void update() = 0;
 }

 class myObject : public entity
 {
 public:
      virtual void update()
       {
        do_things();
       }
 }

 subscriber * ptr = new myObject; //will use shared_ptr, but here i want simplicity

  ptr->update(); 
Run Code Online (Sandbox Code Playgroud)

问题是,是否会调用正确的更新函数(在myObject中实现的函数)?在一个"系列"中有两个具有相同名称的纯虚函数是否有效?

das*_*ght 5

是否会调用正确的更新函数(在myObject中实现的函数)?

是的,它会被调用.

在一个"系列"中有2个具有相同名称的纯虚函数是否有效?

第二个声明(即在entity类中)不会在系列中引入第二个纯虚函数:签名是相同的,因此update()是单个虚函数.此外,第二次声明它是没有必要的:entity将保持抽象,并且update()即使您删除了第二个声明也可以访问该方法.