ए 'स्कोप गार्ड "वस्तु बहुत व्यापक RAII मुहावरा का सिर्फ एक उदाहरण है।
और इसका कोई भी कार्यान्वयन नहीं है। यह कुछ ऐसा है जो सी ++ प्रोग्रामर को समझता है, न केवल प्रतिलिपि/पेस्ट करें। सौभाग्य से, यह लागू करने के लिए भी बहुत छोटा है।
आप एक वर्ग बनाते हैं जो किसी प्रकार के संसाधन का प्रतिनिधित्व करता है। जब कक्षा को तत्काल (उसके रचनाकारों में से एक द्वारा) किया जाता है, तो उसे संसाधन प्राप्त करना चाहिए, और यदि विफल हो जाता है तो अपवाद फेंकना चाहिए। जब कक्षा नष्ट हो जाती है, तो उसे सभी आवश्यक सफाई करने के लिए संसाधन का निपटान करना चाहिए।
और ... यह है। आपको कॉपी कन्स्ट्रक्टर और असाइनमेंट ऑपरेटर को संभालना होगा (या तो संसाधन क्लोन करके या इन दो कार्यों को निजी बनाकर, जिन्हें कभी नहीं कहा जाता है)।
आपको "एक अच्छा कार्यान्वयन" खोजने की आवश्यकता नहीं है, क्योंकि आप दर्जनों और दर्जनों विभिन्न कार्यान्वयन स्वयं लिखने जा रहे हैं। वे लिखने के लिए तुच्छ हैं, और उन्हें आसानी से पुन: उपयोग नहीं किया जा सकता क्योंकि प्रत्येक व्यक्ति एक अलग प्रकार के संसाधन को लपेटता है।
इससे पहले कभी नहीं सुना - दूसरों के लिए मुझे झूठ बोलते हैं, http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Scope_Guard देखें। ऐसा लगता है कि यह बहुत उपयोगी नहीं है, आईएमएचओ। और यह लागू करने के लिए तुच्छ है - आपको "कार्यान्वयन खोजने" की आवश्यकता नहीं है। –
@Neil: दिलचस्प है क्योंकि यह एक आरएआईआई से संबंधित मुहावरे से अपेक्षा की अपेक्षा से काफी अलग है। मुझे आश्चर्य है कि सफल निष्पादन के बाद संसाधन कौन संभालता है। –
@Matthieu मुझे भी। स्क्रू-अप के लिए अतिरिक्त संभावनाओं को छोड़कर, मैं स्मार्ट पॉइंटर्स पर क्या देख सकता हूं। –