कॉपी कंस्ट्रक्टर और कॉन्स्ट ऑब्जेक्ट: एक गहन स्पष्टीकरण
सी में, एक वर्ग को परिभाषित करते समय, आम तौर पर नियम का पालन करने की सिफारिश की जाती है तीन में से, जो एक कॉपी कंस्ट्रक्टर, एक असाइनमेंट ऑपरेटर और एक डिस्ट्रक्टर को लागू करने का सुझाव देता है। कॉपी कंस्ट्रक्टर किसी मौजूदा ऑब्जेक्ट से डेटा कॉपी करके एक नया ऑब्जेक्ट बनाने के लिए जिम्मेदार है। कॉपी कंस्ट्रक्टर के तर्क प्रकार के रूप में const, जैसा कि निम्नलिखित उदाहरण में है:
class ABC { जनता: int ए; पूर्णांक बी; एबीसी (स्थिरांक एबीसी और अन्य) { ए = अन्य.ए; बी = अन्य.बी; } };
const के बिना क्या होता है?
class ABC {
public:
int a;
int b;
ABC(const ABC &other)
{
a = other.a;
b = other.b;
}
};
class एबीसी { जनता: int ए; पूर्णांक बी; एबीसी(एबीसी एवं अन्य) { ए = अन्य.ए; बी = अन्य.बी; } };
सबसे पहले, कॉन्स्ट ऑब्जेक्ट की प्रतियां बनाना असंभव हो जाता है। चूँकि तर्क को स्थिरांक के रूप में चिह्नित नहीं किया गया है, यह केवल गैर-स्थिरांक वस्तुओं को स्वीकार कर सकता है। इस प्रकार, हम एक कॉन्स्ट संदर्भ से एक नई वस्तु को आरंभ नहीं कर सकते हैं।दूसरा, कॉन्स्ट की अनुपस्थिति का अर्थ है कि तर्क ऑब्जेक्ट को कॉपी कंस्ट्रक्टर के भीतर संशोधित किया जा सकता है। यह आम तौर पर वांछनीय नहीं है, क्योंकि एक कॉपी कंस्ट्रक्टर का उद्देश्य किसी मौजूदा ऑब्जेक्ट की एक समान प्रतिलिपि बनाना है। कॉपी करने के दौरान मूल ऑब्जेक्ट को संशोधित करने से अप्रत्याशित और संभावित रूप से गलत व्यवहार हो सकता है। :class ABC
{
public:
int a;
int b;
ABC(ABC &other)
{
a = other.a;
b = other.b;
}
};
तार्किक संगति:
किसी ऑब्जेक्ट के डेटा को कॉपी करते समय उसे संशोधित न करना तार्किक समझ में आता है।कॉन्स्ट प्रतियों का निर्माण: कॉन्स्ट तर्क हमें अधिक लचीलेपन को सुनिश्चित करते हुए, गैर-कॉन्स्ट और कॉन्स्ट दोनों वस्तुओं की प्रतियां बनाने की अनुमति देते हैं। हमें अस्थायी वस्तुओं से प्रतियां बनाने की इजाजत देता है।
निष्कर्ष में, कॉपी कंस्ट्रक्टर्स में कॉन्स्ट तर्कों का उपयोग करने से तार्किक शुद्धता, ऑब्जेक्ट अपरिवर्तनीयता और अस्थायी वस्तुओं के साथ संगतता सहित महत्वपूर्ण लाभ मिलते हैं। हालांकि ऐसे असाधारण मामले हो सकते हैं जहां गैर-कॉन्स्ट तर्क उपयुक्त हैं, सामान्य अनुशंसा कॉन्स्ट का उपयोग करने के लिए बनी हुई है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3