C++ Tasarım Desenleri ve Türevleri Mark Joshi'nin fiyatlandırmasını ve onun kodunu C++ 11'de uygulayarak okuyorum. Sanal kopya kurucularından bahsettiği bölüm 4'e kadar her şey yolunda gitti. BuradaC++ 11 sanal kopya oluşturucu
PayOffDoubleDigital thePayOff(Low, Up);
VanillaOption theOption(thePayOff, Expiry);
sorun VanillaOption
thePayOff
bir referans içerir olmasıdır. Bu durumda ve birisi thePayOff
değiştirirse, theOption
davranışı, istenmeden değiştirilebilir.
PayOff* PayOffCall::clone() const
{
return new PayOffCall(*this);
}
dönersek: Her kalıtsal sınıfında tanımlanan sonra
virtual PayOff* clone() const = 0;
ve: o tavsiyede çözüm PayOffDoubleDigital
'ın taban sınıftaki sanal kopya kurucu oluşturmaktır, PayOff
böylece theOption
kendi kopyasını içeren Yeni, C++ 11'de uygunsuz olabilecek bir şey olarak beni yakaladı. Peki bu C++ 11 kullanarak işlemenin uygun yolu nedir?
Sıfır kuralı: Uygun sahiplik semantiği ile bir tanıtıcı sınıf yapın ve her yerde kullanın. –
Bazı ek araştırmam var gibi görünüyor. Teşekkürler Martinho. – BDig
Daha önce yazdım: http://flamingdangerzone.com/cxx11/2012/08/15/rule-of-zero.html –