gpt4 book ai didi

c++ - 基类构造函数不会调用派生类版本的虚方法

转载 作者:行者123 更新时间:2023-11-28 03:34:43 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Calling virtual function of derived class from base class constructor?

我有以下文件(请原谅打字错误,我根据内存快速重写了代码)

BaseReader(){
openFile();
}

void BaseReader::openFile(){
//logic to open file
}

打开文件在 .h 中被声明为虚拟公共(public)方法(它受到保护,但我在试图找出问题所在时将其切换为公共(public)方法)。 SortReader 定义为:

class SortReader: public BaseReader{
public:
SortReader();
void openFile();
};

使用以下代码:

SortReader::SortReader(): BaseReader(){}

SortReader::openFile(){
sortFile();
BaseReader::openFile();
}

当我尝试构建 SortReader 对象时,永远不会调用 sortFile 方法。我可以在调试器中遍历它并观察 SortReader 调用 BaseReader 构造函数 BaseReader 构造函数调用 openFile,后者调用 openFile 的 BaseReader 版本。我希望它调用 SortReader 对打开文件的实现。我需要做什么才能做到这一点?

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