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的情况下进行扩展(或替代模式如何)?