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

C++ में तीन का नियम

सी ++ का उपयोग करते समय तीन का नियम अंगूठे का नियम है। यह एक अच्छा अभ्यास नियम है जो कहता है कि यदि आपकी कक्षा को इनमें से किसी की आवश्यकता है

  • एक कॉपी कंस्ट्रक्टर,
  • असाइनमेंट ऑपरेटर,
  • या विध्वंसक,

स्पष्ट रूप से परिभाषित किया गया है, तो इन तीनों की आवश्यकता होने की संभावना है।

ऐसा क्यों है? ऐसा इसलिए है, क्योंकि यदि आपकी कक्षा को उपरोक्त में से किसी की आवश्यकता है, तो वह गतिशील रूप से आवंटित संसाधनों का प्रबंधन कर रही है और इसे सफलतापूर्वक प्राप्त करने के लिए दूसरे की आवश्यकता होगी। उदाहरण के लिए, यदि आपको एक असाइनमेंट ऑपरेटर की आवश्यकता है, तो आप वर्तमान में संदर्भ द्वारा कॉपी की जा रही वस्तुओं की प्रतियां बना रहे होंगे, इसलिए संसाधनों का आवंटन। इन संसाधनों को मुक्त करने के लिए आपको प्रतिलिपि बनाने वाले और विनाशक के लिए प्रतिलिपि बनाने वाले की आवश्यकता होगी।

<मजबूत>1. कॉपी कंस्ट्रक्टर -कंपाइलर द्वारा आपूर्ति की गई कॉपी कंस्ट्रक्टर फू मैनेजर की सभी विशेषताओं की सदस्य-वार कॉपी करता है। यह असाइनमेंट ऑपरेटर के समान ही समस्याएं उत्पन्न करता है।

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

<मजबूत>3. विध्वंसक - जब यह प्रबंधक दायरे से बाहर हो जाता है, तो इसे अपने द्वारा प्रबंधित किए जा रहे सभी संसाधनों को मुक्त कर देना चाहिए।


  1. सी ++ में तीन बनाम पांच का नियम?

    C++ का उपयोग करते समय तीन का नियम अंगूठे का नियम है। यह एक अच्छा अभ्यास नियम है जो कहता है कि यदि आपकी कक्षा को इनमें से किसी की आवश्यकता है एक कॉपी कंस्ट्रक्टर, असाइनमेंट ऑपरेटर, या विध्वंसक, स्पष्ट रूप से परिभाषित किया गया है, तो इन तीनों की आवश्यकता होने की संभावना है। ऐसा क्यों है? इसका कारण

  1. C++ के संदर्भ में तीन का नियम क्या है?

    C++ का उपयोग करते समय तीन का नियम अंगूठे का नियम है। यह एक अच्छा अभ्यास नियम है जो कहता है कि यदि आपकी कक्षा को इनमें से किसी की आवश्यकता है एक कॉपी कंस्ट्रक्टर, असाइनमेंट ऑपरेटर, या विध्वंसक, स्पष्ट रूप से परिभाषित किया गया है, तो इन तीनों की आवश्यकता होने की संभावना है। ऐसा क्यों है? इसका कारण

  1. C++ में असाइनमेंट ऑपरेटर्स

    असाइनमेंट ऑपरेटर बाएं ऑपरेंड द्वारा निर्दिष्ट ऑब्जेक्ट में एक मान संग्रहीत करता है। दो प्रकार के असाइनमेंट ऑपरेशंस हैं:साधारण असाइनमेंट, जिसमें दूसरे ऑपरेंड का मान पहले ऑपरेंड द्वारा निर्दिष्ट ऑब्जेक्ट में संग्रहीत किया जाता है, और कंपाउंड असाइनमेंट, जिसमें एक अंकगणित, शिफ्ट, या बिटवाइज़ ऑपरेशन को स