क्या इस मुहावरे का वर्णन करने के लिए एक नाम है?
यूएमएल में इसे एकत्रीकरण कहा जाता है। यह इस बात से अलग है कि सदस्य वस्तु संदर्भित वर्ग के स्वामित्व में नहीं है । C ++ में आप संदर्भ या संकेत के माध्यम से एकत्रीकरण को दो अलग-अलग तरीकों से लागू कर सकते हैं।
मैं यह मान रहा हूं कि एक बड़ी जटिल वस्तु को कॉपी करने के संभावित बड़े ओवरहेड को रोकना है?
नहीं, इसका उपयोग करने का वास्तव में बुरा कारण होगा। एकत्रीकरण का मुख्य कारण यह है कि निहित वस्तु का स्वामित्व वाली वस्तु के पास नहीं है और इस प्रकार उनके जीवनकाल बाध्य नहीं हैं। विशेष रूप से संदर्भित वस्तु आजीवन एक संदर्भ को रेखांकित करना चाहिए। यह बहुत पहले बनाया गया था और कंटेनर के जीवनकाल के अंत तक रह सकता है। इसके अलावा, संदर्भित ऑब्जेक्ट की स्थिति को वर्ग द्वारा नियंत्रित नहीं किया जाता है, लेकिन बाहरी रूप से बदल सकता है। यदि संदर्भ नहीं है const
, तो वर्ग उस वस्तु की स्थिति को बदल सकता है जो उसके बाहर रहता है।
क्या यह आम तौर पर अच्छा अभ्यास है? क्या इस दृष्टिकोण में कोई कमी है?
यह एक डिज़ाइन टूल है। कुछ मामलों में यह एक अच्छा विचार होगा, कुछ में यह नहीं होगा। सबसे आम नुकसान यह है कि संदर्भ रखने वाली वस्तु का जीवनकाल संदर्भित वस्तु के जीवनकाल से अधिक नहीं होना चाहिए। यदि संदर्भित ऑब्जेक्ट नष्ट होने के बाद एन्क्लोज़िंग ऑब्जेक्ट संदर्भ का उपयोग करता है , तो आपके पास अपरिभाषित व्यवहार होगा। सामान्य तौर पर, संरचना को एकत्रीकरण के लिए पसंद करना बेहतर होता है, लेकिन यदि आपको इसकी आवश्यकता है, तो यह किसी अन्य के रूप में अच्छा उपकरण है।