我有一個情況我有以下簡要:在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