अनुशंसित, 2020

संपादक की पसंद

C ++ में निजी और संरक्षित के बीच अंतर

डेटा को छुपाने के लिए C ++ प्रोग्रामिंग लैंग्वेज में तीन तरह के एक्सेस प्रोटेक्शन को परिभाषित किया गया है। डेटा छिपाना ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का एक अनिवार्य हिस्सा है। निजी और संरक्षित कीवर्ड डेटा संरक्षण के स्तर को एक वर्ग के भीतर डेटा और फ़ंक्शन को छिपाने के लिए प्रदान करते हैं। निजी सदस्यों को विरासत में नहीं दिया जा सकता है जबकि संरक्षित सदस्य को विरासत में दिया जा सकता है, लेकिन एक सीमित दायरे में। ये विनिर्देशन उन सदस्यों की दृश्यता को दर्शाते हैं जहां निजी संरक्षित की तुलना में अधिक प्रतिबंधात्मक है।

तुलना चार्ट

तुलना के लिए आधारनिजीसंरक्षित
व्युत्पन्न वर्ग के लिए संपत्ति का प्रवेश
व्युत्पन्न वर्ग आधार वर्ग के निजी सदस्यों तक नहीं पहुँच सकता।व्युत्पन्न वर्ग बेस क्लास संरक्षित सदस्यों तक पहुंच सकता है।
सरल उपयोग
कक्षा के निजी सदस्य वर्ग के दायरे से बाहर हैं।वर्ग के संरक्षित सदस्य वर्ग के दायरे से बाहर के दुर्गम हैं, केवल कक्षा को छोड़कर।
अपनी ही कक्षा से सुलभहाँहाँ
व्युत्पन्न वर्ग से सुलभनहींहाँ
बाहर से सुलभनहींनहीं

प्राइवेट की परिभाषा

निजी के रूप में घोषित किए गए वर्ग के सदस्यों को केवल कक्षा के भीतर ही पुनर्प्राप्त किया जा सकता है। दूसरे शब्दों में, कक्षा के निजी अनुभाग में घोषित सदस्यों को केवल कक्षा के मित्र समारोह और सदस्य समारोह द्वारा ही पहुँचा जा सकता है। निजी सदस्य सीधे व्युत्पन्न वर्ग के लिए प्राप्य नहीं हैं और कक्षा के दायरे से बाहर हैं।

C ++ प्रोग्राम निजी पहुंच निर्दिष्टकों की अवधारणा को दर्शाता है।

 # नामस्थान std का उपयोग करके हटा दें; कक्षा ए {निजी: इंट आई; public: void get () {cout <> i; }}; वर्ग B: public A {सार्वजनिक: void show () {i ++; cout << "\ n आपका वेतन वृद्धि के बाद दर्ज की गई संख्या"> # में नाम स्थान std का उपयोग करना शामिल है; वर्ग स्तनपायी {सार्वजनिक: शून्य स्तनपायी (शून्य) {cout << "यह स्तनपायी श्रेणी के अंतर्गत आता है।" < 

ऊपर दिए गए कार्यक्रम में, चाइल्ड क्लास का एक ऑब्जेक्ट "ओब" नाम से बनाया गया है और पैरेंट क्लास के सदस्य फ़ंक्शन को चाइल्ड क्लास मेथड "मरीन_ममालमेट" के माध्यम से एक्सेस किया जा सकता है। हालाँकि, मूल विधि "ऑब्जेक्ट" के साथ सीधे पहुँचा नहीं जा सकता।

संरक्षित की परिभाषा

किसी वर्ग में संरक्षित घोषित किए गए कक्षा सदस्यों को केवल कक्षा के सदस्य फ़ंक्शन और मित्र फ़ंक्शन के माध्यम से ही पहुँचा जा सकता है। इन संरक्षित सदस्यों को चाइल्ड क्लास को छोड़कर कक्षा के दायरे से बाहर नहीं किया जा सकता है (तुरंत इससे व्युत्पन्न)। यह विरासत में प्रतिबंधित उद्देश्य को पूरा करता है और एक सीमित तरीके से गुणों को विरासत में देता है।

नीचे दिया गया C ++ प्रोग्राम संरक्षित एक्सेस स्पेसियर्स की अवधारणा को दर्शाता है।

 # नामस्थान std का उपयोग करके हटा दें; वर्ग account1 {संरक्षित: int x, y; // व्युत्पन्न वर्ग जनता के लिए सुलभ: शून्य सेट (int a, int b) {x = a; y = ख; } शून्य दिखाना () {cout < 

उपरोक्त उदाहरण में, चाइल्ड क्लास बेस क्लास के गुणों को विरासत में देती है क्योंकि डेटा सदस्यों को सार्वजनिक या संरक्षित घोषित किया जाता है। यदि आधार वर्ग में x और y को निजी घोषित किया गया होता तो यह संभव नहीं होता।

C ++ में निजी और संरक्षित के बीच महत्वपूर्ण अंतर

  1. संरक्षित कीवर्ड का उपयोग उन वर्ग सदस्यों के निर्माण के लिए किया जा सकता है जो अपनी कक्षा के लिए निजी हैं, लेकिन उन्हें व्युत्पन्न वर्ग द्वारा विरासत में प्राप्त और उपयोग किया जा सकता है। इसके विपरीत, निजी का उपयोग करते समय यह संभव नहीं है, क्योंकि निजी सदस्यों को सीधे व्युत्पन्न वर्ग से विरासत में नहीं मिला जा सकता है।
  2. जब बेस क्लास को निजी एक्सेस स्पेसियर का उपयोग करके विरासत में मिला है, तो यह बेस क्लास के सभी सार्वजनिक और संरक्षित सदस्यों को व्युत्पन्न वर्ग का निजी सदस्य बनाता है। के रूप में के खिलाफ, यह संरक्षित पहुँच विनिर्देशक में मामला नहीं है।

निष्कर्ष

निजी और संरक्षित पहुँच विनिर्देशक हैं जिनका उपयोग कक्षा और उसके सदस्यों की दृश्यता को अलग-अलग तरीके से निर्धारित करने के लिए किया जाता है। हालांकि, संरक्षित निजी की तुलना में अधिक लचीला है।

Top