gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 22:25:08 24 4
gpt4 key购买 nike

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

virtual function call from base class

但是,我真正的问题是:

如果 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;

}

更新:

感谢纳文。

他为我提供了一个页面,其中包含有关该主题的所有相关信息。

我会让你知道这里的链接:

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

最佳答案

尽管它是一个虚函数,但由于派生类尚未完全构造,因此会调用基类的版本。基类构造函数在派生类构造函数之前被调用,所以如果派生虚函数被调用,它会带有一个未完全初始化的实例——一个可能的(可能)灾难的秘诀。

关于c++ - 从基类构造函数调用派生类的虚函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6561429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com