[英]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.