0
以下模式已爲人熟知。現在多態對象複製
class A
{
public:
virtual A* clone() const
{
return new A(*this);
}
private:
int x = 666;
};
class B : public A
{
public:
virtual B* clone() const override
{
return new B(*this);
}
private:
int y = 777;
};
我想從其他對象多態的方式來複制對象。我希望能夠到:
- 由B型
- 從類型對象的複製
- 通過複製創建B類的對象來創建A類對象的對象複製創建類型爲A的對象從類型的對象甲
- 通過從乙
類型的對象拷貝創建類型B的對象我知道的情況下1包括切片但這是期望的。 另外我知道情況3不復制y
,這也是我想要的(我想使用默認的初始值)。
所有4種情況應該做多態...知道目標類型但不知道實際的源對象類型。
上述模式如何能夠在不使用RTTI的情況下進行擴展(或替代模式如何)?