是否可以在c ++中从父函数调用子函数。
让我们举一个例子:父类在函数中定义(解析)一般工作流。然后,工作流调用表示流的一部分的不同方法(parseElementA)。子类可以覆盖这些函数,如果不是标准函数,则应使用父类的一部分。
我的问题是:我创建一个子对象并执行工作流功能(解析)。当在工作流函数中调用覆盖函数(parseElementA)时,它从父级而不是从子级调用函数。 我该怎么做才能调用孩子的覆盖功能。
class Parent {
public:
void parse() { parseElementA(); }
virtual void parseElementA() { printf("parent\n"); }
};
class Child : public Parent {
public:
void parseElementA() { printf("child\n"); }
};
Child child;
child.parse();
输出是父级。我能做什么让它回归孩子。
非常感谢您的任何建议。
答案 0 :(得分:9)
修复代码中的编译器错误后it works fine。
答案 1 :(得分:2)
#include <cstdio>
class Parent {
public:
void parse() { parseElementA(); }
virtual void parseElementA() { printf("parent\n"); }
};
class Child : public Parent {
public:
void parseElementA() { printf("child\n"); }
};
int main() {
Child child;
child.parse();
return 0;
}