एक कर सकते हैं struct
सी ++ में विरासत में मिला जा सकता है?
एक कर सकते हैं struct
सी ++ में विरासत में मिला जा सकता है?
जवाबों:
हाँ, struct
वास्तव में की तरह है class
, सिवाय में डिफ़ॉल्ट पहुंच है public
के लिए struct
(जब यह है private
के लिए class
)।
हाँ। इनहेरिटेंस डिफ़ॉल्ट रूप से सार्वजनिक है।
सिंटेक्स (उदाहरण):
struct A { };
struct B : A { };
struct C : B { };
एलेक्स और इवान ने जो पहले ही कहा है, उसके अलावा, मैं यह जोड़ना चाहूंगा कि सी ++ संरचना सी संरचना की तरह नहीं है।
C ++ में, एक संरचना में C ++ वर्ग की तरह ही विधियाँ, वंशानुक्रम आदि हो सकते हैं।
बेशक। C ++ में, संरचनाएं और कक्षाएं लगभग समान हैं (निजी के बजाय सार्वजनिक रूप से डिफ़ॉल्ट करने जैसी चीजें छोटे अंतरों में से हैं)।
C ++ में, एक संरचना की विरासत निम्नलिखित अंतरों को छोड़कर एक वर्ग के समान है:
किसी वर्ग / संरचना से एक संरचना प्राप्त करते समय, आधार वर्ग / संरचना के लिए डिफ़ॉल्ट पहुँच-निर्दिष्ट सार्वजनिक है। और जब एक वर्ग प्राप्त होता है, तो डिफ़ॉल्ट पहुंच निर्दिष्ट निजी होती है।
उदाहरण के लिए, प्रोग्राम 1 एक संकलन त्रुटि के साथ विफल रहता है और प्रोग्राम 2 ठीक काम करता है।
// Program 1
#include <stdio.h>
class Base {
public:
int x;
};
class Derived : Base { }; // Is equivalent to class Derived : private Base {}
int main()
{
Derived d;
d.x = 20; // Compiler error because inheritance is private
getchar();
return 0;
}
// Program 2
#include <stdio.h>
struct Base {
public:
int x;
};
struct Derived : Base { }; // Is equivalent to struct Derived : public Base {}
int main()
{
Derived d;
d.x = 20; // Works fine because inheritance is public
getchar();
return 0;
}