कक्षा का उपयोग करते समय, वास्तव में संरक्षित और निजी सदस्यों के बीच कोई अंतर नहीं है। कक्षा का उपयोग करने वाले किसी भी चीज़ के लिए भी पहुंच योग्य नहीं है।
class A {
private: int privateNum;
protected: int protectedNum;
public: int publicNum;
void SetNumbers(int num) {
privateNum = num; //valid, private member can be accessed in member function
protectedNum = num; //valid, protected member can be accessed in member function
}
void main() {
A classA;
classA.privateNum = 1; //compile error can't access private member
classA.protectedNum = 1; //compile error can't access protected member
classA.publicNum = 1; //this is OK
classA.SetNumbers(1); //this sets the members not accessible directly
}
जब आप संरक्षित सदस्यों के साथ कक्षा से प्राप्त होते हैं तो अंतर प्रभावी होता है।
class B : public A {
}
बेस क्लास के सभी निजी सदस्य अभी भी निजी हैं, और व्युत्पन्न कक्षा तक पहुंच योग्य नहीं होंगे। संरक्षित सदस्य, दूसरी ओर, विरासत कक्षा के लिए सुलभ हैं, लेकिन विरासत वर्ग के बाहर अभी भी उपलब्ध नहीं हैं।
class B : public A {
public:
void SetBNumbers(int num) {
privateNum = num; //compile error, privateNum can only be accessed by members of A, not B
protectedNum = num; //this works, as protected members can be accessed by A and B
}
}
void main() {
B classB;
classB.publicNum = 1; //valid, inherited public is still public
classB.protectedNum = 1; //compile error, can't access protected member
classB.privateNum = 1; //compile error, B doesn't know that privateNum exists
classB.SetBNumbers(1); //this sets the members not accessible directly
}
धन्यवाद! मुझे अब मेरी गलती दिखाई दे रही है –