इस ट्यूटोरियल में, हम उदाहरणों की मदद से C ++ में सार्वजनिक, संरक्षित और निजी विरासत का उपयोग करना सीखेंगे।
C ++ वंशानुक्रम में, हम अलग-अलग एक्सेस मोड में बेस क्लास से एक चाइल्ड क्लास प्राप्त कर सकते हैं। उदाहरण के लिए,
class Base (… .… … . ); class Derived : public Base (… .… … . );
कीवर्ड public
को कोड में देखें
class Derived : public Base
इसका मतलब है कि हमने सार्वजनिक मोड में बेस क्लास से एक व्युत्पन्न वर्ग बनाया है । वैकल्पिक रूप से, हम कक्षाओं को संरक्षित या निजी मोड में भी प्राप्त कर सकते हैं।
ये 3 कीवर्ड ( public
, protected
, और private
) के रूप में जाना जाता है पहुँच विनिर्देशक सी ++ विरासत में।
C ++ में सार्वजनिक, संरक्षित और निजी विरासत
सार्वजनिक , संरक्षित और निजी विरासत में निम्नलिखित विशेषताएं हैं:
- सार्वजनिक उत्तराधिकार व्युत्पन्न
public
वर्गpublic
में आधार वर्ग के सदस्यों को बनाता है , औरprotected
आधार वर्ग के सदस्यprotected
व्युत्पन्न वर्ग में बने रहते हैं । - संरक्षित वंशानुक्रम
public
औरprotected
आधार वर्ग के सदस्योंprotected
को व्युत्पन्न वर्ग में बनाता है । - निजी उत्तराधिकार व्युत्पन्न वर्ग में आधार वर्ग के सदस्यों
public
औरprotected
सदस्यों को बनाता हैprivate
।
नोट: private
बेस क्लास के सदस्य व्युत्पन्न वर्ग के लिए दुर्गम हैं।
class Base ( public: int x; protected: int y; private: int z; ); class PublicDerived: public Base ( // x is public // y is protected // z is not accessible from PublicDerived ); class ProtectedDerived: protected Base ( // x is protected // y is protected // z is not accessible from ProtectedDerived ); class PrivateDerived: private Base ( // x is private // y is private // z is not accessible from PrivateDerived )
उदाहरण 1: C ++ सार्वजनिक इनहेरिटेंस
// C++ program to demonstrate the working of public inheritance #include using namespace std; class Base ( private: int pvt = 1; protected: int prot = 2; public: int pub = 3; // function to access private member int getPVT() ( return pvt; ) ); class PublicDerived : public Base ( public: // function to access protected member from Base int getProt() ( return prot; ) ); int main() ( PublicDerived object1; cout << "Private = " << object1.getPVT() << endl; cout << "Protected = " << object1.getProt() << endl; cout << "Public = " << object1.pub << endl; return 0; )
आउटपुट
निजी = 1 संरक्षित = 2 सार्वजनिक = 3
यहाँ, हम व्युत्पन्न है PublicDerived
से Base
में सार्वजनिक मोड ।
परिणामस्वरूप PublicDerived
:
- विरोध विरासत में मिला है ।
- पब और जनता के
getPVT()
रूप में विरासत में मिला है । - निजी के बाद से प्राइवेट में दुर्गम है
Base
।
चूंकि निजी और संरक्षित सदस्य सुलभ नहीं हैं, हमें सार्वजनिक कार्य करने getPVT()
और getProt()
उन्हें एक्सेस करने की आवश्यकता है:
// Error: member "Base::pvt" is inaccessible cout << "Private = " << object1.pvt; // Error: member "Base::prot" is inaccessible cout << "Protected = " << object1.prot;
सार्वजनिक विरासत में पहुंच
अभिगम्यता | निजी सदस्य | संरक्षित सदस्य | जनता के सदस्य |
---|---|---|---|
बेस क्लास | हाँ | हाँ | हाँ |
व्युत्पन्न वर्ग | नहीं न | हाँ | हाँ |
उदाहरण 2: C ++ संरक्षित वंशानुक्रम
// C++ program to demonstrate the working of protected inheritance #include using namespace std; class Base ( private: int pvt = 1; protected: int prot = 2; public: int pub = 3; // function to access private member int getPVT() ( return pvt; ) ); class ProtectedDerived : protected Base ( public: // function to access protected member from Base int getProt() ( return prot; ) // function to access public member from Base int getPub() ( return pub; ) ); int main() ( ProtectedDerived object1; cout << "Private cannot be accessed." << endl; cout << "Protected = " << object1.getProt() << endl; cout << "Public = " << object1.getPub() << endl; return 0; )
आउटपुट
निजी तक पहुँचा नहीं जा सकता। रक्षित = २ लोक = ३
यहाँ, हम व्युत्पन्न है ProtectedDerived
से Base
में सुरक्षित मोड ।
परिणामस्वरूप ProtectedDerived
:
- विरोध, पब और संरक्षित के
getPVT()
रूप में विरासत में मिला है । pvt
यह निजी होने के बाद से दुर्गम हैBase
।
जैसा कि हम जानते हैं, संरक्षित सदस्यों तक सीधे पहुँचा नहीं जा सकता है।
नतीजतन, हम उपयोग नहीं कर सकते getPVT()
से ProtectedDerived
। यही कारण है कि पब चर का उपयोग करने के लिए हमें getPub()
फ़ंक्शन बनाने की आवश्यकता है ProtectedDerived
।
// Error: member "Base::getPVT()" is inaccessible cout << "Private = " << object1.getPVT(); // Error: member "Base::pub" is inaccessible cout << "Public = " << object1.pub;
संरक्षित विरासत में पहुंच
अभिगम्यता | निजी सदस्य | संरक्षित सदस्य | जनता के सदस्य |
---|---|---|---|
बेस क्लास | हाँ | हाँ | हाँ |
व्युत्पन्न वर्ग | नहीं न | हाँ | हां (संरक्षित चर के रूप में विरासत में मिला) |
उदाहरण 3: C ++ प्राइवेट इनहेरिटेंस
// C++ program to demonstrate the working of private inheritance #include using namespace std; class Base ( private: int pvt = 1; protected: int prot = 2; public: int pub = 3; // function to access private member int getPVT() ( return pvt; ) ); class PrivateDerived : private Base ( public: // function to access protected member from Base int getProt() ( return prot; ) // function to access private member int getPub() ( return pub; ) ); int main() ( PrivateDerived object1; cout << "Private cannot be accessed." << endl; cout << "Protected = " << object1.getProt() << endl; cout << "Public = " << object1.getPub() << endl; return 0; )
आउटपुट
निजी तक पहुँचा नहीं जा सकता। रक्षित = २ लोक = ३
यहाँ, हम व्युत्पन्न है PrivateDerived
से Base
में निजी मोड ।
परिणामस्वरूप PrivateDerived
:
- विरोध,
pub
और निजी केgetPVT()
रूप में विरासत में मिला है । - निजी के बाद से प्राइवेट में दुर्गम है
Base
।
जैसा कि हम जानते हैं, निजी सदस्यों तक सीधे पहुँचा नहीं जा सकता है।
नतीजतन, हम उपयोग नहीं कर सकते getPVT()
से PrivateDerived
। यही कारण है कि पब चर का उपयोग करने के लिए हमें getPub()
फ़ंक्शन बनाने की आवश्यकता है PrivateDerived
।
// Error: member "Base::getPVT()" is inaccessible cout << "Private = " << object1.getPVT(); // Error: member "Base::pub" is inaccessible cout << "Public = " << object1.pub;
निजी विरासत में पहुंच
अभिगम्यता | निजी सदस्य | संरक्षित सदस्य | जनता के सदस्य |
---|---|---|---|
बेस क्लास | हाँ | हाँ | हाँ |
व्युत्पन्न वर्ग | नहीं न | हां (निजी चर के रूप में विरासत में मिला) | हां (निजी चर के रूप में विरासत में मिला) |