C ++在基类函数内调用重写函数

时间:2018-03-29 14:23:31

标签: c++

我认为如果我创建一个具有调用虚方法的构造函数的基类,那么如果子类覆盖了该方法,则会调用它。

考虑

#include <iostream>

using namespace std;

class Base {
    protected:
    void CreateA();
    virtual void CreateB();
    public:
    Base();
    ~Base();
};
Base::Base(){this->CreateA();}
Base::~Base(){}
void Base::CreateA(){cout << "BASE CREATE A " << endl; this->CreateB();}
void Base::CreateB(){cout << "BASE CREATE B " << endl;}

class Child : public Base {
    protected:
    virtual void CreateB();
    public:
    Child();
    ~Child();
};
Child::Child(){}
Child::~Child(){}
void Child::CreateB(){cout << "Child CREATE B " << endl;}

int main()
{
    Child child;

    return 0;
}

这会打印出来

  

BASE CREATE A

     

BASE CREATE B

而不是

  

BASE CREATE A

     

儿童创造B

正如我所料。

我该如何做到这一点?

0 个答案:

没有答案