我认为如果我创建一个具有调用虚方法的构造函数的基类,那么如果子类覆盖了该方法,则会调用它。
考虑
#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
正如我所料。
我该如何做到这一点?