我有这个布局
class Base {
public:
virtual void Initialize() { // base Implementation }
Base() { Initialize(); }
};
class der_1 : public Base
{
public:
der_1() : Base() {}
virtual void Initialize() { // der_1 Implementation }
};
class der_2 : public Base
{
public:
der_2() : Base() {}
virtual void Initialize() { // der_2 Implementation }
};
现在,每当我创建类der_1或der_2的新对象时,我最终都会调用Initialize()的基本实现。显然,我在创建对象时无法调用虚函数。
截至目前,我在创建类型为der_1或der_2的对象后调用Initialize函数,这对我来说似乎不是正确的做法,因为每次创建对象时都会将Initialize函数调用耦合。
有人可以建议我更好的选择吗?
答案 0 :(得分:0)
在构造函数调用期间,对象“is”仍然只是基类的一个实例,因此它确实知道了重载的Initialize()函数。
这里有一些处理这种情况的建议: