2012-11-12 18 views
7
Aşağıdaki sorun var

:const ve non-const örnekleri için farklı copyCtor yazabilir miyim?

Obj o; 
Obj o1(o), o1=o; // deep-copies 
const Obj c(o), c=o; // deep-copies 
const Obj c1(c), c1=c; // shallow-copies 
Obj o2(c), o2=c; // deep-copies 

nasıl tercihen miras olmadan yapabilirsiniz:

Bunu gereken bir sınıf var? (Ben Const_obj aksi Obj devralan yapacağını anlamına gelir.)

DÜZENLEME: o zaman ben kolayca yanlışlıkla değil klonlama yoluyla böcek tanıtmak çünkü doğrudan o.clone() kullanma

bir seçenek değildir.

DÜZENLEME:

Son olarak, Scott Meyers tarafından Etkili C'den fikrini kullanarak tembel değerlendirme ile düzgün ve tam bir çözüm ++ yoktur. Cevabımı aşağıya bak.

+0

Bir clone() yöntemi eklemeniz ve açıkça istediğinizi yapmanız gerekebilir. – Caribou

+0

Bu, izlenebilir hataları koduma yazmamaktan kaçınmak istiyorum. Bu şekilde çok kolay. –

+0

Şey, sessizce yapmanın çok daha tehlikeli olduğunu düşünüyorum - özellikle de işleri taşıdıktan sonra yeni birileri geliyor ... (My 2 penneth) – Caribou

cevap

İlgili konular