我可以拥有一个必须从非抽象基重写的虚拟函数吗
Can I have a virtual function that must be overridden from a non-abstract base
假设我有基类和派生类
class MyBaseClass
{
public:
virtual void MustBeOverRidden()
{
DoSomething();
}
};
class MyDerivedClass : public MyBaseClass
{
public:
void MustBeOverRidden()
{
MyBaseClass::DoSomething();
DoSomethingElse();
}
};
如果BaseClass是抽象的,我可以声明
virtual void MustBeOverRidden() = 0;
然而,在这种情况下,基类功能通常将作为派生功能的一部分进行调用。在这种情况下,是否有任何方法可以强制所有派生类重写基类函数?或者,我可以提供一个纯虚拟函数的实现吗?
编辑:纯虚拟函数的实现不起作用,因为我需要能够实例化我的基类,这导致错误C2259:"MyBaseClass":无法实例化抽象类
是的,可以强制派生类覆盖虚拟函数,还可以提供一个实现:
class MyBaseClass
{
public:
virtual void MustBeOverRidden() = 0;
};
void MyBaseClass::MustBeOverRidden()
{
DoSomething();
}
相关文章:
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 重写虚拟函数和继承
- C++:从抽象类重写纯虚拟运算符重载
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 如何重写继承的嵌套类中存在的虚拟方法
- 重写另一个类中的虚拟方法以在 C++ 中访问其成员
- 如何在子类中重写时调用私有虚拟基类实现
- 基类能否知道派生类是否已重写虚拟方法
- 我将如何通过抽象类传递虚拟方法,但可以选择不重写
- C++重写虚拟模板化方法
- 在派生类中重写哪个基类的虚拟析构函数
- 重写模板基类中的纯虚拟函数
- 用模板方法重写虚拟方法
- 用模板化函数重写虚拟函数
- 重写虚拟函数返回类型不同,并且不是协变的
- 在多重继承布局中单独重写虚拟方法
- 重写虚拟 void 方法时返回对象?C++
- 重写虚拟方法时无法返回派生类指针
- 用可选参数重写虚拟函数
- 如何使用泛型返回类型重写虚拟函数