我有以下类(class):
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
本身的实例是不可能的,因为它仍然是抽象的。