एकल और बहु inheritance
single inheritance से is-a संबंधों का मॉडल बनाएँ और multiple inheritance की समस्याओं को नियंत्रित करें।
एकल और बहु inheritance, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
विरासत क्या है
विरासत एक वर्ग (व्युत्पन्न वर्ग) को दूसरे वर्ग (आधार वर्ग) का पुनःउपयोग और विस्तार करने देती है। यह “एक प्रकार है” संबंधों का मॉडल बनाती है।
class Animal {
public:
void breathe() { std::cout << "breathing\n"; }
};
class Dog : public Animal {
public:
void bark() { std::cout << "Woof!\n"; }
};सार्वजनिक विरासत
“एक प्रकार है” संबंध का मॉडल बनाने के लिए public का उपयोग करें — एक Dog, Animal है। सदस्य व्युत्पन्न वर्ग में अपना पहुँच-स्तर बनाए रखते हैं।
संरक्षित और निजी विरासत
protected और private विरासत “के माध्यम से कार्यान्वित है” संबंध का मॉडल बनाती हैं — इनका उपयोग बहुत कम होता है। ऐसे मामलों में संयोजन को प्राथमिकता दें।
आधार सदस्यों तक पहुँच
व्युत्पन्न वर्ग आधार के किसी भी सार्वजनिक या संरक्षित सदस्य का सीधे उपयोग कर सकता है।
Dog d;
d.breathe(); // inherited from Animal
d.bark(); // own memberनिर्माणकर्ता क्रम
आधार के निर्माणकर्ता व्युत्पन्न वर्ग के निर्माणकर्ताओं से पहले चलते हैं। आधार को तर्क देने के लिए सदस्य आरंभकर्ता सूची का उपयोग करें।
class Pet : public Animal {
std::string name_;
public:
Pet(std::string n) : Animal(), name_(std::move(n)) {}
};विनाशक क्रम
विनाशक उलटे क्रम में चलते हैं — पहले व्युत्पन्न, फिर आधार। यदि आप आधार संकेतक के माध्यम से हटाते हैं, तो आधार विनाशकों को virtual बनाएँ।
बहु-विरासत
C++ किसी वर्ग को एक से अधिक आधारों से विरासत लेने की अनुमति देता है। इसका सीमित उपयोग करें — यह अभिकल्प को जटिल बनाता है।
class Printable { public: virtual void print() = 0; };
class Serializable { public: virtual std::string serialize() = 0; };
class Document : public Printable, public Serializable {
// implements both interfaces
};हीरे की समस्या
यदि दो आधार वर्गों का कोई साझा आधार हो, तो व्युत्पन्न वर्ग में उस आधार की दो प्रतिलिपियाँ आ जाती हैं। इसे आभासी विरासत से हल करें।
class A {};
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {}; // D has ONE A, not twoआभासी विरासत की लागत
आभासी आधार वर्ग अतिरिक्त लागत जोड़ते हैं — प्रत्येक वस्तु के लिए एक अतिरिक्त संकेतक और आधार सदस्य की प्रत्येक पहुँच पर एक अतिरिक्त अप्रत्यक्षता। जहाँ संभव हो, इससे बचें।
संयोजन बनाम विरासत
अक्सर “के-पास-है” संयोजन, “एक प्रकार है” विरासत से सरल होता है। एक Car के पास एक Engine होता है — Car को Engine से विरासत न दें।
class Engine { /* ... */ };
class Car {
Engine engine_; // composition
};अंतरफलक विरासत बनाम कार्यान्वयन विरासत
दो सामान्य उपयोग:
- अंतरफलक — किसी अनुबंध को पूरा करने के लिए शुद्ध-आभासी आधार से व्युत्पन्न करें
- कार्यान्वयन — कोड का पुनःउपयोग करने के लिए व्युत्पन्न करें (CRTP, मिश्रण)
विरासत का उपयोग कब करें
विरासत का उपयोग तब करें जब:
- वास्तविक “एक प्रकार है” संबंध मौजूद हो
- आपको आभासी फलनों के माध्यम से रनटाइम बहुरूपता चाहिए
- आधार वर्ग को विरासत के लिए अभिकल्पित किया गया हो
त्वरित जाँच
बहु-विरासत का उपयोग होने पर साझा आधार वर्ग की दो प्रतिलिपियाँ बनने से कौन-सी तकनीक रोकती है?
पुनरावलोकन
सार्वजनिक विरासत के माध्यम से विरासत “एक प्रकार है” संबंधों का मॉडल बनाती है। बहु-विरासत की अनुमति है, लेकिन हीरे की समस्या के लिए आभासी विरासत आवश्यक होती है। “के-पास-है” संबंधों और कोड के पुनःउपयोग के लिए संयोजन को प्राथमिकता दें।
एआई शिक्षक के साथ C++ सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “एकल और बहु inheritance” पाठ निःशुल्क है?
हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “एकल और बहु inheritance” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“एकल और बहु inheritance” में मैं क्या सीखूँगा?
single inheritance से is-a संबंधों का मॉडल बनाएँ और multiple inheritance की समस्याओं को नियंत्रित करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“एकल और बहु inheritance” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- एकल और बहु inheritance
- वर्चुअल फ़ंक्शन और वर्चुअल फ़ंक्शन तालिका
- Abstract classes और pure virtual methods
- Inheritance बनाम composition: समझौते