【发布时间】:2013-08-11 03:32:39
【问题描述】:
假设我有基类和派生类
class MyBaseClass
{
public:
virtual void MustBeOverRidden()
{
DoSomething();
}
};
class MyDerivedClass : public MyBaseClass
{
public:
void MustBeOverRidden()
{
MyBaseClass::DoSomething();
DoSomethingElse();
}
};
如果 BaseClass 是抽象的,我可以声明
virtual void MustBeOverRidden() = 0;
但是在这种情况下,基类功能通常会作为派生功能的一部分被调用。在这种情况下,有没有办法强制所有派生类覆盖基类函数?或者,我可以提供一个纯虚函数的实现吗?
编辑: 纯虚函数的实现不起作用,因为我需要能够实例化我的基类,这会导致 错误 C2259: 'MyBaseClass' : cannot instantiate abstract class
【问题讨论】:
-
你的意思是
class MyDerivedClass : public MyBaseClass? -
是的,HAL,很好发现!
标签: c++