可能重复:
从基类构造函数调用派生类的虚函数?
我有以下文件(请原谅拼写错误,我从内存中快速重写代码)
BaseReader(){
openFile();
}
void BaseReader::openFile(){
//logic to open file
}
打开的文件在 .h 中被声明为虚拟公共方法(它受到保护,但我在试图找出问题所在时将其切换为公共方法)。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 的打开文件的实现。我需要做什么才能发生这种情况?