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

Abstract class inheriting another abstract class with the same function name

本文关键字:抽象类 函数 另一个 继承      更新时间:2023-10-16
 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(); 

问题是,是否会调用适当的更新函数(在myObject中实现的函数)?在一个"家族"中具有相同名称的2个纯虚函数是否有效?

将适当的更新函数(一个实现在myObject)被调用?

是的,它将被调用。

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

第二个声明(即在entity类中)没有将第二个纯虚函数引入到该类中:签名是相同的,因此update()是单个虚函数。而且,没有必要第二次声明它:entity仍然是抽象的,即使您删除了第二次声明,也可以访问update()方法。

虚函数或虚方法是指其行为可以在继承类中被具有相同签名的函数重写的函数或方法。

所以答案是