繁体   English   中英

抽象类继承具有相同功能名称的另一个抽象类

[英]Abstract class inheriting another abstract class with the same function name

 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中实现的更新功能)? 在一个“家族”中拥有两个具有相同名称的纯虚拟函数是否有效?

将调用适当的更新功能(在myObject中实现的更新功能)吗?

是的,它将被调用。

在一个“家族”中拥有两个具有相同名称的纯虚拟函数是否有效?

第二个声明(即在entity类内部)没有向家族引入第二个纯虚函数:签名是相同的,因此update()是单个虚函数。 而且,没有必要第二次声明它: entity将保持抽象状态,并且即使您删除了第二个声明也可以访问update()方法。

虚函数或虚方法是一种函数或方法,其行为可以在继承类内被具有相同签名的函数覆盖。

所以答案是肯定的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM