我正在阅读一些克隆c ++实现,它似乎总是定义为
Clonable* clone();
我想知道为什么总是返回一个指针;我可以定义一个克隆来返回一个Clonable对象吗?
答案 0 :(得分:8)
我可以定义一个克隆来返回一个
Clonable
对象吗?
不确定。哎呀,你可以制作一个clone()
方法来返回你想要的任何东西。我的猜测是,Clonable
类应该以多态方式使用,clone()
方法是virtual
。指针(或引用)是C ++中运行时多态性的唯一选择。如果它没有返回指针,你会得到object slicing。