मैं निम्नलिखित समस्या है:क्या मैं कॉन्स और गैर-कॉन्स उदाहरणों के लिए अलग-अलग प्रतिलिपि लिख सकता हूं?
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
मैं कैसे बेहतर विरासत के बिना यह कर सकते हैं:
मैं एक वर्ग है जो इस करना चाहिए? (मेरा मतलब है मैं Const_obj
अन्यथा Obj
से इनहेरिट करना होगा।)
संपादित करें:
सीधे o.clone()
का उपयोग करते हुए एक विकल्प नहीं है क्योंकि तब मैं आसानी से गलती से नहीं क्लोनिंग द्वारा बग प्रस्तुत कर सकता है।
संपादित करें:
अंत में, एक उचित, पूरा आलसी मूल्यांकन के साथ विचार का उपयोग कर प्रभावी सी से समाधान ++ स्कॉट Meyers कर रहा है। नीचे मेरा जवाब देखें।
मुझे लगता है कि आपको क्लोन() विधि जोड़ने और स्पष्ट रूप से जो करना है उसे करने की आवश्यकता हो सकती है। – Caribou
यही वह है जो मैं अपने कोड में शायद ही ट्रैक करने योग्य बग नहीं लिखना चाहता हूं। यह इस तरह से इतना आसान है। –
ठीक है, मुझे लगता है कि चुपचाप यह करना अधिक खतरनाक है - खासकर जब आप नौकरियों को ले जाते हैं और कोई नया आता है ... (मेरा 2 पैसा) – Caribou