我有一个情况我有以下简要:在C++中临时克隆?
class K {
K clone() const{K cl; /* clone this to cl then */ return cl; }
};
K* call_clone()
{
K k;
return new K(k.clone());
}
编译器的优化后,将在本倍加复制?
或者:
会更有效的执行C*clone()
?
像这样:
class K {
K* clone() const { K*p=new K(); /* clone this to *p then */ return p; }
};
K* call_clone()
{
K k;
return k.clone();
}
(我问这个,因为即使K的浅拷贝可能是昂贵的,这将是在实践中的一类数据结构)
我认为你需要阅读一些关于C++ *复制构造函数*,也可能*参考文献* – Roddy
@罗迪:对于第二种情况 - 不一定。在使用多态性时,像他的第二个例子中的clone()可能是必需的。你可以在Java,C#等语言中看到所有类型的东西。 – 2012-11-14 14:08:52