假设我有一个从基类派生的类。多态性允许我通过指向基类的指针(使用虚函数)调用派生类的函数。换句话说,我可以让派生类的成员“假装”成为基类的成员。牢记这一点,基类是否有可能在其构造函数中实际构造派生类的成员(然后“假装”为基类的成员,因此没有任何问题)?从逻辑上讲,我认为这不应该起作用,但我无法弄清楚如何在语法上做到这一点。如果这是不可能的,为什么不呢?
我知道我可以有一个单独的函数来构造派生类的成员并将其作为基类的成员返回。如果这最终是不可能的,这就是我将要做的,但是将它作为构造函数会更干净(因为这就是这个单独的函数基本上是什么)。
编辑:这是我正在寻找的一个例子:
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();
}
实际上,会有多个派生类,基类构造函数会根据参数在它们之间进行选择,但从概念上讲,您只需要一个。