<分区>
假设我有一个从基类派生的类。多态性允许我通过指向基类的指针调用派生类的函数(使用虚函数)。换句话说,我可以让派生类的成员“假装”为基类的成员。请记住,基类是否有可能在其构造函数中实际构造派生类的成员(然后派生类“假装”为基类的成员,因此没有任何问题)?从逻辑上讲,我看不出有什么理由说这不起作用,但我无法弄清楚如何在语法上做到这一点。如果这是不可能的,为什么不呢?
我知道我可以有一个单独的函数来构造派生类的成员并将其作为基类的成员返回。如果这最终无法实现,我将这样做,但将它作为构造函数会更清晰(因为这就是这个单独的函数的基本含义)。
编辑:这是我正在寻找的示例:
class base
{
base()
{
this=new derived(); //This is what I am looking for
}
virtual func();
};
class derived : public base
{
derived() : base()
{}
func()
{
...
}
};
如上所述,这可以通过以下方式实现:
base *fake_base_constructor()
{
return new derived();
}
在实践中,会有多个派生类,基类构造函数会根据参数在派生类中进行选择,但从概念上讲,你只需要一个。