gpt4 book ai didi

c++ - 在 C++ 的父构造函数中调用重写的方法

转载 作者:行者123 更新时间:2023-11-28 00:23:44 25 4
gpt4 key购买 nike

我有一些这样的代码 (C++11):

表格.hpp:

class CForm{
public:
CForm(int paTemplate);
protected:
virtual void createFromTemplate(int paTemplate);
}

对话框.hpp

class CDialog : public CForm {
public:
CDialog(int paTemplate);
private:
void createFromTemplate(int paTemplate);
};

表格.cpp

CForm::CForm(int paTemplate){
createFromTemplate(paTemplate);
}

对话框.cpp

CDialog::CDialog(int paTemplate) : CForm(paTemplate){
active = false;
}

我希望我的对话框调用它自己的 createFromTemplate,这样就调用了表单的 createFromTemplate。我怎样才能实现它? (我在我的 main 中调用了 CDialog(template);)。

最佳答案

这是不可能的 - 当您在构造函数/析构函数中调用虚函数时,将调用“this”类或以下类的版本。在您的情况下,无论您做什么,它总是会调用 CForm::createFromTemplate()。

检查此链接 - http://www.artima.com/cppsource/nevercall.html - 这是“Effective C++”中的一章。

关于c++ - 在 C++ 的父构造函数中调用重写的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26125980/

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