Ale*_*lex 3 c++ polymorphism copy-constructor
我有一个函数,它获取指向超类的指针并对其执行操作.但是,在某些时候,该函数必须对输入的对象进行深度复制.有什么方法可以执行这样的副本吗?
我想到让函数成为模板函数并让用户传递类型,但我希望C++提供更优雅的解决方案.
Mat*_* M. 12
SpaceCowboy提出了惯用法clone,但忽略了3个关键细节:
class Super
{
public:
virtual Super* clone() const { return new Super(*this); }
};
class Child: public Super
{
public:
virtual Child* clone() const { return new Child(*this); }
};
Run Code Online (Sandbox Code Playgroud)
clone是一种const方法clone 返回指向当前类的指针,而不是基类clone 返回当前对象的副本第二个是非常重要的,因为它允许使用有益于有时你有更多的类型信息而不仅仅是一个Super*.
此外,我通常更喜欢clone提供副本,而不仅仅是提供相同类型的新对象.否则你正在使用一个Exemplar模式来构建新对象,但你没有正确克隆,这个名称具有误导性.
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |