Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++11 में रूल ऑफ फाइव क्या है?


रूल ऑफ फाइव को C++ में रिसोर्स मैनेजमेंट के लिए लागू किया जाता है। रिसोर्स मैनेजमेंट क्लाइंट को मैनेज्ड ऑब्जेक्ट के जीवनकाल के बारे में चिंता करने से मुक्त करता है, संभावित रूप से C++ कोड में मेमोरी लीक और अन्य समस्याओं को समाप्त करता है। लेकिन यह मैनेजमेंट एक कीमत पर आता है। द रूल ऑफ द बिग फाइव कहता है कि यदि आपको निम्नलिखित फ़ंक्शन्स में से किसी एक को लिखना है तो आपके पास उन सभी के लिए एक पॉलिसी होनी चाहिए। यदि हमारे पास एक ऑब्जेक्ट Foo है तो हमारे पास एक FooManager हो सकता है जो रिसोर्स Foo को संभालता है। FooManager को लागू करते समय, आपको संभवतः निम्नलिखित सभी फ़ंक्शन्स को लागू करने की आवश्यकता होगी:

  • डिस्ट्रक्टर - जब यह मैनेजर स्कोप से बाहर जाता है तो इसे उन सभी रिसोर्सेज को फ्री करना चाहिए जिन्हें यह मैनेज कर रहा था।

  • असाइनमेंट ऑपरेटर - यदि आप एक प्रदान नहीं करते हैं तो कंपाइलर एक डिफ़ॉल्ट असाइनमेंट ऑपरेटर बनाता है। डिफ़ॉल्ट असाइनमेंट ऑपरेशन एक मेंबर-वाइज कॉपी फ़ंक्शन है और शैलो कॉपी करता है न कि डीप कॉपी। इससे मेमोरी लीक, गलत असाइनमेंट जैसी समस्याएं हो सकती हैं।

  • कॉपी कंस्ट्रक्टर - कंपाइलर द्वारा प्रदान किया गया कॉपी कंस्ट्रक्टर FooManager के सभी एट्रिब्यूट्स की मेंबर-वाइज कॉपी करता है। यह असाइनमेंट ऑपरेटर के समान समस्याएं पैदा करता है।

  • मूव कंस्ट्रक्टर - ऑब्जेक्ट्स को कॉपी करना महंगा हो सकता है क्योंकि इसमें अस्थायी ऑब्जेक्ट्स बनाना, कॉपी करना और फिर नष्ट करना शामिल होता है। C++11 ने r-value रेफरेंस की अवधारणा पेश की। एक r-value रेफरेंस को एक r-value से स्पष्ट रूप से बांधा जा सकता है। एक r-value एक अनाम ऑब्जेक्ट है। एक अस्थायी ऑब्जेक्ट, दूसरे शब्दों में। इस r-value रेफरेंस का उपयोग कंस्ट्रक्टर में पास किए गए r-value का रेफरेंस बनाने के लिए किया जा सकता है।

  • मूव असाइनमेंट ऑपरेटर - एक समय में केवल एक रिसोर्स होना उपयोगी होता है। इस रिसोर्स के स्वामित्व को एक मैनेजर से दूसरे में ट्रांसफर किया जा सकता है। ऐसे मामलों में आप मूव असाइनमेंट ऑपरेटर प्रदान कर सकते हैं।

रूल ऑफ फाइव के बारे में जानने के लिए यह एक बेहतरीन संसाधन है: https://www.feabhas.com/sites/default/files/2016-06/Rule%20of%20the%20Big%20Five.pdf.


  1. URL (यूनिफॉर्म रिसोर्स लोकेटर) क्या है? URL (यूनिफॉर्म रिसोर्स लोकेटर) क्या है?

    URL के रूप में संक्षिप्त, एक यूनिफॉर्म रिसोर्स लोकेटर इंटरनेट पर एक फाइल के स्थान की पहचान करने का एक तरीका है। ये वही हैं जिनका उपयोग हम न केवल वेबसाइट खोलने के लिए करते हैं, बल्कि सर्वर पर होस्ट की गई इमेज, वीडियो, सॉफ्टवेयर प्रोग्राम और अन्य प्रकार की फाइलों को डाउनलोड करने के लिए भी करते हैं। अप

  1. HTML पेज में हॉरिजॉन्टल रूल क्या है? HTML पेज में हॉरिजॉन्टल रूल क्या है?

    परिचय <hr> टैग HTML में एक हॉरिजॉन्टल रूल (क्षैतिज रेखा) को दर्शाता है। यह HTML पेज में कंटेंट को अलग करता है। बस ध्यान रखें कि <hr> टैग का कोई एंड टैग नहीं होता। इसे HTML पेज में <body> ... </body> टैग में जोड़ा जाता है। उदाहरण <!DOCTYPE html> <html> <h

  1. सिस्टम संसाधन समझना: प्रकार, कार्य और अनुकूलन सिस्टम संसाधन समझना: प्रकार, कार्य और अनुकूलन

    सिस्टम संसाधन: साधन संपन्न होना एक सार्वभौमिक रूप से आकर्षक विशेषता है, साधन संपन्न होने का मतलब यह नहीं है कि किसी के पास बहुत सारे संसाधन हों बल्कि किसी भी समय किसी की क्षमता या दुर्लभ संसाधनों को अधिकतम करने की क्षमता हो। यह न केवल वास्तविक दुनिया में बल्कि हार्डवेयर के साथ-साथ सॉफ्टवेयर में भी स