我讀的C++設計模式及衍生馬克喬希定價和執行他在C++ 11的代碼。在我討論虛擬拷貝構造函數的第4章之前,一切都很順利。C++ 11的虛擬拷貝構造函數
PayOffDoubleDigital thePayOff(Low, Up);
VanillaOption theOption(thePayOff, Expiry);
的這裏的問題是,VanillaOption
包含thePayOff
參考。如果是這樣的話,有人修改thePayOff
的theOption
的行爲是可以不知不覺地修改。他建議的解決方案是建立在PayOffDoubleDigital
的基類的虛擬拷貝構造函數,PayOff
使theOption
包含它自己的拷貝:
virtual PayOff* clone() const = 0;
,然後在每個繼承類中定義:
PayOff* PayOffCall::clone() const
{
return new PayOffCall(*this);
}
返回新引入了我作爲C++ 11中可能不合適的東西。那麼使用C++ 11處理這個問題的正確方法是什麼?
零規則:使用正確的所有權語義來創建句柄類並在任何地方使用。 –
看起來我有一些額外的研究。謝謝你,馬丁霍。 – BDig
我之前寫過:http://flamingdangerzone.com/cxx11/2012/08/15/rule-of-zero.html –