我有以下课程:
class gkLogicBrick
{
public:
gkLogicBrick(gkGameObject* object, gkLogicLink* link, const gkString& name);
virtual ~gkLogicBrick();
virtual gkLogicBrick* clone(gkLogicLink* link, gkGameObject* dest) = 0;
//unimportant function/variables
};
它被子类化为:
class gkLogicController : public gkLogicBrick
{
gkLogicController(gkGameObject* object, gkLogicLink* link, const gkString& name);
virtual ~gkLogicController() {}
//unimportant function/variables
};
命名的方法clone()
不会被覆盖,但是会从gkLogicController
对象的另一个类中调用它。我以为不允许调用纯虚函数?C ++编译器是否会为继承的任何纯虚函数自动创建默认定义?
可以调用纯虚函数(通过动态调度机制)。当您考虑它时,这实际上就是纯虚函数的目的。
我假设“正在从gkLogicController
对象的另一个类调用”实际上意味着通过指向的指针或引用gkLogicController
。然后,这必须指向/引用派生自该类的类的实例,而该类gkLogicController
确实覆盖了该实例clone
。创建gkLogicController
它本身的实例是不可能的,因为它仍然是抽象的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句