[C++] निजी और संरक्षित सदस्य: सी ++



Answers

कक्षा ए के सार्वजनिक सदस्य सभी और सभी के लिए सुलभ हैं।

कक्षा ए के संरक्षित सदस्य ए के कोड के बाहर पहुंच योग्य नहीं हैं, लेकिन ए से प्राप्त किसी भी वर्ग के कोड से पहुंच योग्य है।

कक्षा ए के निजी सदस्य ए के कोड के बाहर या ए से प्राप्त किसी भी वर्ग के कोड से बाहर नहीं पहुंच सकते हैं।

तो, अंत में, संरक्षित या निजी के बीच चयन निम्नलिखित प्रश्नों का उत्तर दे रहा है: व्युत्पन्न कक्षा के प्रोग्रामर में आप कितना भरोसा रखना चाहते हैं?

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

Question

क्या कोई मुझे कक्षाओं में निजी और संरक्षित सदस्यों के बीच अंतर के रूप में उजागर कर सकता है? मैं सर्वोत्तम अभ्यास सम्मेलनों से समझता हूं कि वर्ग के बाहर बुलाए जाने वाले चर और कार्यों को निजी बनाया जाना चाहिए - लेकिन मेरी एमएफसी परियोजना को देखते हुए, एमएफसी सुरक्षित पक्ष के पक्ष में दिखता है।

क्या अंतर है और मुझे किस का उपयोग करना चाहिए?




चूंकि व्युत्पन्न वर्ग में संरक्षित सदस्यों को लाने और अपडेट करने के लिए कोई सार्वजनिक सदस्य फ़ंक्शन की आवश्यकता नहीं है, इसलिए यह कोड की प्रभावशीलता को बढ़ाता है और हमें आवश्यक कोड की मात्रा कम कर देता है। हालांकि व्युत्पन्न वर्ग के प्रोग्रामर को यह पता होना चाहिए कि वह क्या कर रहा है।




एक संरक्षित नॉनस्टैटिक बेस क्लास सदस्य को निम्न में से किसी एक का उपयोग करके उस बेस क्लास से व्युत्पन्न किसी भी वर्ग के सदस्यों और मित्रों द्वारा एक्सेस किया जा सकता है:

  • प्रत्यक्ष या अप्रत्यक्ष रूप से व्युत्पन्न कक्षा के लिए एक सूचक
  • प्रत्यक्ष या परोक्ष रूप से व्युत्पन्न कक्षा का संदर्भ
  • प्रत्यक्ष या परोक्ष रूप से व्युत्पन्न कक्षा का एक वस्तु



एमएफसी संरक्षित होने का कारण यह है कि यह एक ढांचा है। आप शायद एमएफसी कक्षाओं को उप-वर्ग करना चाहते हैं और उस स्थिति में कक्षाओं के सामान्य उपयोग के लिए दिखाई देने वाली विधियों तक पहुंचने के लिए संरक्षित इंटरफ़ेस की आवश्यकता नहीं है।




protected के रूप में चिह्नित गुण और विधियां हैं - निजी लोगों के विपरीत - अभी भी उप-वर्गों में दिखाई दे रही हैं।

जब तक आप संभावित उप-वर्गों में विधि को ओवरराइड करने की संभावना का उपयोग नहीं करना चाहते हैं, तो मैं उन्हें private बना दूंगा।




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

आपके पास सी ++ में निजी, संरक्षित और सार्वजनिक विरासत हो सकती है, जो निर्धारित करेगा कि व्युत्पन्न पदानुक्रम में व्युत्पन्न कक्षाएं क्या पहुंच सकती हैं। सी # उदाहरण के लिए केवल सार्वजनिक विरासत है।




निजी सदस्य को केवल उसी कक्षा में ही पहुंचा जा सकता है जहां उसने घोषित किया है कि जहां संरक्षित सदस्य को कक्षा में एक्सेस किया जा सकता है जहां इसे इसके द्वारा विरासत में प्राप्त कक्षाओं के साथ घोषित किया जाता है।




Links