1

我有这个布局

class Base {
   public:
   virtual void Initialize() { // base Implementation }
   Base() { Initialize(); }
};

class der_1 : public Base
{
    public:
    der_1() : Base() {}
    virtual void Initialize() { // der_1 Implementation }
};

class der_2 : public Base
{
    public:
    der_2() : Base() {}
    virtual void Initialize() { // der_2 Implementation }
};

现在,每当我创建 der_1 或 der_2 类的新对象时,我最终都会调用 Initialize() 的基本实现。显然,在创建对象时我不能调用虚函数。

到目前为止,我在创建 der_1 或 der_2 类型的对象后调用 Initialize 函数,这对我来说似乎不是正确的做法,因为这会将 Initialize 函数调用与每次创建对象时结合起来。

有人可以建议我更好的选择吗?

4

1 回答 1

0

在构造函数调用期间,对象“仍然”只是基类的一个实例,因此它确实知道您重载的 Initialize() 函数。

这里有一些处理这种情况的建议:

来自构造函数的 C++ 虚函数

于 2013-03-04T12:54:02.977 回答