从基类构造函数调用派生类的虚函数?

Jes*_* Vn 15 c++

我正在尝试完成上一个问题中描述的相同内容:

从基类调用虚函数

但是,我真正的问题是:

如果f()是Base类中的构造函数怎么办?将调用哪个g()?我不知道我做错了,但在我的计划中,似乎是相反的.

从前一个问题中获取相同的变量,显示这样的代码

行为看起来像这样:

Class Base

{   

    Base(){g();};

    virtual void g(){//Do some Base related code;}

};



Class Derived : public Base

{   

    Derived(){};

    virtual void g(){//Do some Derived related code};

};



int main()

{

    Derived newDerived;

    return 0;  

}
Run Code Online (Sandbox Code Playgroud)

更新:

Thanx到Naveen.

他向我提供了一个页面,其中包含有关此主题的所有相关信息.

我会告诉你这里的链接:

parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.6

Jim*_*uck 24

即使它是一个虚函数,基类的版本也会被调用,因为派生类还没有完全构造.在派生类构造函数之前调用基类构造函数,因此如果要调用派生的虚函数,它将使用未完全初始化的实例 - 可能的(可能)灾难配方.