4
 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 中实现的那个)吗?在一个“家族”中拥有两个同名的纯虚函数是否有效?

4

2 回答 2

6

会调用正确的更新函数(在 myObject 中实现的那个)吗?

是的,它会被调用。

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

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

于 2013-01-20T12:06:07.417 回答
1

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

所以答案是肯定的。

于 2013-01-20T12:08:51.090 回答