构造函数中的虚函数调用

时间:2013-03-04 12:50:05

标签: c++ virtual-functions

我有这个布局

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函数调用耦合。

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

1 个答案:

答案 0 :(得分:0)

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

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

C++ virtual function from constructor