调用父函数中被覆盖的子函数

call overwritten child function within parent function

本文关键字:覆盖 子函数 函数 调用      更新时间:2023-10-16

在c++中是否可以从父函数调用子函数。

举个例子:父类在函数中定义(解析(通用工作流。然后,工作流调用表示流的一部分的不同方法(parseElementA(。这些函数可以被子类覆盖,如果不能使用作为父类一部分的standart函数的话。

我的问题是:我创建一个子对象并执行工作流函数(解析(。当在工作流函数中调用覆盖的函数(parseElementA(时,它从父函数而不是从子函数调用该函数。我该怎么做呢?它调用child中的重写函数。

    class Parent {
      public:
        void parse() { parseElementA(); }
        virtual void parseElementA() { printf("parentn"); }
    };
    class Child : public Parent {
      public: 
        void parseElementA() { printf("childn"); }
    };
    Child child;
    child.parse();

输出为父级。我该怎么办,它还孩子。

非常感谢你的建议。

修复代码中的编译器错误后,它可以正常工作。

#include <cstdio>
class Parent {
        public:
                void parse() { parseElementA(); }
                virtual void parseElementA() { printf("parentn"); }
};
class Child : public Parent {
        public:
                void parseElementA() { printf("childn"); }
};
int main() {
   Child child;
   child.parse();
   return 0;
}