पांच का नियम संसाधन प्रबंधन के लिए C++ में लागू होता है। संसाधन प्रबंधन क्लाइंट को प्रबंधित ऑब्जेक्ट के जीवनकाल के बारे में चिंता करने से मुक्त करता है, संभावित रूप से मेमोरी लीक और C ++ कोड में अन्य समस्याओं को समाप्त करता है। लेकिन यह प्रबंधन एक कीमत पर आता है। द बिग फाइव का नियम कहता है कि यदि आपको निम्नलिखित में से कोई एक कार्य लिखना है तो आपको उन सभी के लिए एक नीति बनानी होगी। यदि हमारे पास ऑब्जेक्ट फू है तो हमारे पास एक FooManager हो सकता है जो संसाधन Foo को संभालता है। FooManager को लागू करते समय, संभवतः आप सभी को निम्नलिखित कार्यों को लागू करने की आवश्यकता होगी -
-
विनाशक - जब यह प्रबंधक दायरे से बाहर हो जाता है, तो इसे अपने द्वारा प्रबंधित किए जा रहे सभी संसाधनों को मुक्त कर देना चाहिए।
-
असाइनमेंट ऑपरेटर - यदि आप एक प्रदान नहीं करते हैं तो संकलक एक डिफ़ॉल्ट असाइनमेंट ऑपरेटर बनाता है। डिफ़ॉल्ट असाइनमेंट ऑपरेशन एक सदस्य-वार कॉपी फ़ंक्शन है और एक उथली प्रतिलिपि करता है न कि एक गहरी प्रतिलिपि। इससे मेमोरी लीक, गलत असाइनमेंट जैसी समस्याएं हो सकती हैं।
-
कॉपी कंस्ट्रक्टर - कंपाइलर द्वारा आपूर्ति की गई कॉपी कंस्ट्रक्टर सभी FooManager की विशेषताओं की सदस्य-वार कॉपी करता है। यह असाइनमेंट ऑपरेटर के समान समस्याएँ प्रस्तुत करता है।
-
कंस्ट्रक्टर को स्थानांतरित करें - वस्तुओं की नकल करना महंगा हो सकता है क्योंकि इसमें अस्थायी वस्तुओं को बनाना, कॉपी करना और फिर नष्ट करना शामिल है। सी ++ 11 ने आर-वैल्यू संदर्भ की अवधारणा पेश की। एक आर-मान संदर्भ स्पष्ट रूप से एक आर-मान के लिए बाध्य किया जा सकता है। एक r-मान एक अनाम वस्तु है। एक अस्थायी वस्तु, दूसरे शब्दों में। इस आर-वैल्यू रेफरेंस का इस्तेमाल कंस्ट्रक्टर में पास किए गए आर-वैल्यू का रेफरेंस बनाने के लिए किया जा सकता है।
-
असाइनमेंट ऑपरेटर को स्थानांतरित करें - एक समय में केवल एक संसाधन होना उपयोगी है। इस संसाधन का स्वामित्व एक प्रबंधक से दूसरे प्रबंधक को हस्तांतरित किया जा सकता है। ऐसे मामलों में आप मूव असाइनमेंट ऑपरेटर प्रदान कर सकते हैं।
पांच के नियम के बारे में जानने के लिए यह एक बेहतरीन संसाधन है - https://www.feabhas.com/sites/default/files/2016-06/Rule%20of%20the%20Big%20Five.pdf।