प्रतिलिपि बनाने वाले सामान अपरिवर्तनीय वस्तुओं के लिए अनावश्यक क्यों हैं? कृपया मेरे लिए यह समझाओ।प्रतिकृति वस्तुओं के लिए कॉपी कन्स्ट्रक्टर अनावश्यक क्यों हैं?
उत्तर
क्योंकि मूल्य नहीं बदल सकते, यह हर रूप में सभी मामलों में एक ही वस्तु के संदर्भ के लिए अच्छा सा, वहाँ एक "अतिरिक्त प्रतिलिपि" है, तो बात करने के लिए की आवश्यकता नहीं है।
हालांकि, कई भाषाओं एक प्रति निर्माता की आवश्यकता होती है:
+1 बराबर अपरिवर्तनीय वस्तुओं के दो उदाहरण होने में कोई बात नहीं है - बस हर जगह एक ही उदाहरण का उपयोग करें। – Grundlefleck
यह कुछ हद तक निर्भर भाषा है। यदि आप एक प्रदान नहीं करते हैं, तो भाषा पूरी तरह से एक उत्पन्न करेगी।
अपरिवर्तनीय वस्तु के साथ, तथापि, यह आम तौर पर ठीक बाद से डिफ़ॉल्ट प्रतिलिपि निर्माता (आमतौर पर) सभी मानों का एक उथले नकल करता है। एक परिवर्तनीय डेटा प्रकार (यानी: अन्य ऑब्जेक्ट्स के लिए आंतरिक ऑब्जेक्ट संदर्भों के साथ), उथली प्रतिलिपि आमतौर पर एक खराब विकल्प होती है, क्योंकि प्रतिलिपि केवल संदर्भ/सूचक के भीतर encapsulated की प्रतिलिपि बना रही है।
अपरिवर्तनीय वस्तुओं की प्रतिलिपि इष्टतम नहीं है - यह अनावश्यक रूप से अतिरिक्त संसाधनों का उपयोग करता है। यह स्थिति के आधार पर कोई समस्या उत्पन्न नहीं कर सकता है या नहीं, लेकिन अपरिवर्तनीय वस्तुओं की प्रतिलिपि सामान्य रूप से निराश होनी चाहिए। – Grundlefleck
यह विशेष रूप से जीवन के संबंध में एक भाषा निर्भर सवाल है। एक पल के लिए उन लोगों को भूल जाते हैं।
कॉपी कंस्ट्रक्टर्स है कि वे आप एक वस्तु लेने के लिए और इसके बारे में एक पूरी तरह से स्वतंत्र प्रतिलिपि बनाने के लिए के लिए अनुमति देने में मूल्यवान हैं। यह मूल्यवान है कि अब आप पहले से स्वतंत्र दूसरी वस्तु को संशोधित कर सकते हैं। या एक घटक वस्तु को बदलकर अन्य घटकों से खुद को बचाने के लिए एक निजी प्रतिलिपि बना सकता है।
अपरिवर्तनीय वस्तुएं अपरिवर्तनीय हैं। किसी ऑब्जेक्ट की एक प्रति बनाने में कोई मूल्य नहीं है जो बदलेगा नहीं।
अब जीवन भर फिर से बात करने देता है। सी ++ कॉपी कन्स्ट्रक्टर जैसी भाषाओं में आपको स्मृति/आजीवन मुद्दों के आसपास काम करने की अनुमति भी मिलती है। उदाहरण के लिए यदि मैं एक एपीआई लिख रहा हूं जो SomeType*
लेता है और मैं इसे अपनी विधि के जीवनकाल से अधिक समय तक रखना चाहता हूं। सी ++ में ऐसा करने का सबसे विश्वसनीय तरीका एक प्रतिलिपि निर्माता के माध्यम से ऑब्जेक्ट की एक प्रति बनाना है।
यह इतना स्वाभाविक है क्योंकि अपरिवर्तनीय वस्तु का मूल्य नहीं बदला जा सकता।
- 1. कन्स्ट्रक्टर या कॉपी कन्स्ट्रक्टर?
- 2. कॉपी कन्स्ट्रक्टर और डिफॉल्ट कन्स्ट्रक्टर
- 3. स्थैतिक वस्तुओं के कन्स्ट्रक्टर
- 4. कॉपी कन्स्ट्रक्टर
- 5. कॉपी कन्स्ट्रक्टर
- 6. कॉपी कन्स्ट्रक्टर यहां क्यों नहीं है?
- 7. कॉपी कन्स्ट्रक्टर सी ++ में डिफ़ॉल्ट कन्स्ट्रक्टर को क्यों छुपाता है?
- 8. सी # जेनेरिक कॉपी कन्स्ट्रक्टर
- 9. अनावश्यक प्रतिनिधि कन्स्ट्रक्टर कॉल निकालें?
- 10. कॉपी-कन्स्ट्रक्टर विरासत
- 11. linq-2-sql अतिरिक्त अनावश्यक वस्तुओं को क्यों बनाता है?
- 12. कोबजेक्ट की कॉपी कन्स्ट्रक्टर और असाइनमेंट को अक्षम क्यों करें
- 13. सी # कॉपी कन्स्ट्रक्टर जनरेटर
- 14. मैटलैब कॉपी कन्स्ट्रक्टर
- 15. रूपांतरण निर्माता के बजाय कॉपी कन्स्ट्रक्टर क्यों कहा जाता है?
- 16. टेम्पलेट क्लास कॉपी कन्स्ट्रक्टर
- 17. बेस कॉपी कन्स्ट्रक्टर को
- 18. क्या कोई ऑब्जेक्ट कॉपी कन्स्ट्रक्टर
- 19. टेम्पलेट कॉपी कन्स्ट्रक्टर
- 20. कॉपी प्रारंभिकरण की तरह क्यों है? कॉपी कन्स्ट्रक्टर की आवश्यकता क्यों है?
- 21. जावा कॉपी कन्स्ट्रक्टर और विरासत
- 22. अमरूद: क्यों कन्स्ट्रक्टर के बजाय विधियां बनाते हैं?
- 23. लिंक्डलिस्ट कॉपी कन्स्ट्रक्टर कार्यान्वयन विवरण
- 24. कॉपी कन्स्ट्रक्टर और असाइनमेंट ऑपरेटर
- 25. जावा में एक कॉपी कन्स्ट्रक्टर क्यों नहीं है?
- 26. कोई कॉपी कन्स्ट्रक्टर उपलब्ध नहीं है या कॉपी कन्स्ट्रक्टर को 'स्पष्ट' घोषित किया गया है
- 27. जेएक्स-डब्ल्यूएस द्वारा निर्यात की गई वस्तुओं के लिए एक डिफ़ॉल्ट कन्स्ट्रक्टर क्यों आवश्यक है?
- 28. सी ++: कॉपी कन्स्ट्रक्टर और कॉपी असाइनमेंट ऑपरेटर को कार्यान्वित करना
- 29. कुछ जावास्क्रिप्ट कन्स्ट्रक्टर क्यों काम नहीं कर रहे हैं?
- 30. निहित प्रति कन्स्ट्रक्टर बेस क्लास कॉपी कन्स्ट्रक्टर को क्यों कॉल करता है और परिभाषित प्रति कन्स्ट्रक्टर नहीं करता है?
फिर क्लोन विधि क्यों उपयोग की जाती है? की – Jothi
संभावित डुप्लिकेट [क्या अपरिवर्तनीय वस्तुओं बनाता सुरक्षित प्रकाशन तकनीक के बिना प्रकाशित करने के लिए?] (http://stackoverflow.com/questions/17000617/what-makes-immutable-objects-to-be-published-without-safe-publication -टेक्निक) –