वेलकम टू मॉड्यूल(module) टू प्रोग्रामिंग(Programming) 21 ऑफ C ++। मॉड्यूल(module) की अगली संख्या पर जारी रहने वाले इस मॉड्यूल(module) से, हम एक ऑब्जेक्ट(object) ओरिएंटेड(oriented) प्रोग्रामिंग(Programming) भाषा के सबसे महत्वपूर्ण पहलू पर चर्चा शुरू करने जा रहे हैं, जो कि कक्षाओं(classes) और ऑब्जेक्टस(objects) के बीच विरासत का व्यवहार है। हमने अब तक सीखा है कि C ++ में कक्षाओं(classes) को कैसे परिभाषित किया जा सकता है, कैसे ऑब्जेक्टस(objects) को त्वरित किया जा सकता है। हमने विभिन्न डेटा सदस्यों और एक वर्ग(class) के सदस्य कार्यों की व्यवहार्यता के बारे में सीखा है। हमने निर्माण और विनाश प्रक्रिया और ऑब्जेक्टस(objects) के विभिन्न जीवनकाल के मुद्दों के बारे में सीखा है। हमने अन्य विशेषताओं के बारे में भी बात की है जो मित्र कार्यों के संदर्भ में, स्टातिक(static) फ़ंक्शंस और इसी तरह के कार्यों के लिए विस्तार या अपवाद की विविधता से संबंधित हैं, और हमने देखा है कि विभिन्न सदस्य कार्यों और वैश्विक कार्यों का ओवरलोडिंग(overloading) कैसे होता है हो सकता है। अब, इनहेरिटेंस(Inheritance) एक विषय है जो वस्तु आधारित प्रणालियों के डिजाइन की मुख्य रीढ़ बनाने में इन सभी समझ को जोड़ देगा। इसलिए, इससे पहले कि हम गहराई से इसका अध्ययन करना शुरू करें, मैं आप सभी से आग्रह करूंगा कि आप C ++ की विभिन्न विशेषताओं के बारे में संशोधित करें और उन पर पूरी तरह से चर्चा करें, क्योंकि हम अब तक उन सभी का जिक्र करेंगे, जो अब बहुत नियमित रूप से एक साथ हैं। । अब, इनहेरिटेंस(Inheritance) पर चर्चा करने के लिए जैसा कि मैंने पहले ही उल्लेख किया है कि यह कई मॉड्यूलों पर होगा। इस विशेष मॉड्यूल(module) में, हम आईएसए(ISA) रिलेशनशिप या ऑब्जेक्ट(object) ओरिएंटेड(oriented) विश्लेषण और डिज़ाइन के पदानुक्रम को फिर से देखने की कोशिश करेंगे और देखेंगे कि कैसे C ++ विरासत के संदर्भ में बनाया जा सकता है। मैं यहाँ जो रूपरेखा प्रस्तुत करता हूँ वह थोड़ा अलग ढंग से आयोजित की जाती है। यह केवल इस वर्तमान मॉड्यूल(module) की रूपरेखा नहीं है। यह मैं सी++ में विरासत के पहले स्तर पर चर्चा करने का इरादा रखता है। इसके बाद के कुछ सीक्वल(sequel) होंगे जो हम एक डाइनैमिक(dynamic) परिदृश्य में इनहेरिटेंस(Inheritance) के बारे में बात करेंगे, लेकिन यह विरासत के मूलभूत मूलभूत पहलू हैं। हम क्या करेंगे, जैसा कि हम एक मॉड्यूल(module) से दूसरे में जाते हैं, मैं उन विशिष्ट विषयों को उजागर करूंगा जो विशेष मॉड्यूल(module) हम नीले रंग के संदर्भ में चर्चा करेंगे। इस प्रकार, यदि आप इस पूरे संदर्भ को देखते हैं, तो यह है कि हम मॉड्यूल(module) 21 में चर्चा करने का इरादा रखते हैं। कहा कि, अब हमें आरंभ करना चाहिए। इसलिए, हम आईएसए(ISA) संबंध के बारे में जानते हैं, हमने अक्सर इस पाठ्यक्रम में इसके बारे में बात नहीं की है और आप इससे परिचित हो सकते हैं अन्यथा यह भी, कि वास्तविक दुनिया में हम अक्सर पाते हैं कि एक वस्तु किसी अन्य वस्तु की विशेषज्ञता या सामान्यीकरण है। विशेषज्ञता और सामान्यीकरण ये प्रमुख हैं। तो, एक वस्तु दूसरे का सबसे विशिष्ट या सामान्यीकृत रूप है और इसे आईएसए(ISA) संबंध और ऑब्जेक्ट(object) ओरिएंटेड(oriented) विश्लेषण के रूप में जाना जाता है और डिजाइन इसे गहराई से और C++ इस श्रेणी के इनहेरिटेंस(Inheritance) द्वारा आईएसए(ISA) मॉडल का व्यवहार करता है। इसलिए, C ++ के इनहेरिटेंस(Inheritance) तर्क में शामिल होने से पहले, आइए हम शीघ्रता से ISA संबंध पर एक नज़र डालते हैं। मान लीजिए कि आप क्या कहते हैं एक विशेषज्ञता सामान्यीकरण है? मान लीजिए, हम कहते हैं कि आईएसए(ISA) फूल गुलाब। तो, गुलाब आईएसए(ISA) फूल को गुलाब कहने का क्या मतलब है। हम कहते हैं कि गुलाब, यह विशेष पक्ष है, यह सामान्य पक्ष है कि गुलाब फूल की विशेषता है, यह वह सभी गुण हैं जो फूल है, जैसे कि जब भी हम फूल कहते हैं; हमारे दिमाग में कुछ अवधारणाएँ आती हैं, जैसे उसमें सुगंध होगी, उसमें चमकीला रंग होगा, उसमें पंखुड़ियाँ होंगी इत्यादि। तो, गुलाब में वे सभी गुण होते हैं जो एक फूल के लिए माना जाता है। लेकिन इसके अलावा, गुलाब में कुछ अतिरिक्त गुण होते हैं, यही वजह है कि आप ऐसा करना चाहते हैं। उदाहरण के लिए, एक गुलाब में बहुत विशिष्ट सुगंध होती है, जो कि अन्य फूलों की खुशबू के समान नहीं होती है। इसलिए, जब यह किया जाता है तो हम कहते हैं कि गुलाब फूल की विशेषता है और हम एक ही बात को उल्टे तरीके से कह सकते हैं। हम कह सकते हैं कि फूल गुलाब का एक सामान्यीकरण है। इसलिए, यदि हमारे पास फिर से एक लाल गुलाब और एक गुलाब है, तो हम कह सकते हैं कि एक लाल गुलाब आईएसए(ISA) गुलाब है उसी तरह लाल गुलाब में गुलाब के सभी गुण हैं, लेकिन इसकी एक अतिरिक्त संपत्ति है जैसे यह रंग लाल है और यह लाल है सामान्यीकरण विशेषज्ञता जो गुलाब और लाल गुलाब के बीच मौजूद होगी। इसलिए, हम यह निर्दिष्ट करते हैं कि मैंने यहां जो खींचा है, उसके संदर्भ में, यह आप में से बहुत से लोग जानते हैं कि इसे यूएमएल(UML) डायग्राम(diagram) के रूप में जाना जाता है। यूनिफ़ाइड मॉडलिंग लैंग्वेज(Unified Modeling Language) ऑब्जेक्ट(object) ओरिएंटेड(oriented) तरीके से सिस्टम का वर्णन करने के लिए एक मजबूत भाषा है। तो, ये कक्षाओं(classes) को नामित करते हैं और यह तीर जो अंत में खुले त्रिकोण के साथ समाप्त होता है का अर्थ है विशेषज्ञता। तो, यह पढ़ना है; गुलाब आईएसए(ISA) फूल जो तीर की दिशा है, लाल गुलाब आईएसए(ISA) गुलाब और इतने पर। इसलिए, आरेखीय रूप से हम अक्सर इस आरेख के संदर्भ में इनहेरिटेंस(Inheritance) या विशेषज्ञता सामान्यीकरण का चित्रण करेंगे। इसी तरह, हम कर सकते हैं; हम कह सकते हैं कि Twowheeler ISA वाहन, एक वाहन जिसका उपयोग हम घूमने के लिए करते हैं। तो, हम Twowheelers में घूम सकते हैं, इसलिए हम Twowheeler ISA वाहन कह सकते हैं। इसी तरह, थ्रीव्हीलर आईएसए(ISA) वाहन, लेकिन हम यह निर्दिष्ट कर सकते हैं कि वाहन के सामान्यीकरण के संदर्भ में और 3 पहिया और 2 पहिया वाहन के दो अलग-अलग विशेषज्ञता हैं। तो, सामान्यीकरण और विशेषज्ञता कई अलग-अलग तरीकों से संबंधित हो सकती है। तो, यह एक प्रकार है जहां एक सामान्यीकृत अवधारणा है और उसके लिए कई विशिष्ट अवधारणाएं हैं। हम आमतौर पर इसे एक आधार के रूप में संदर्भित करते हैं और ये, हम व्युत्पन्न(derived) के रूप में संदर्भित करते हैं। विभिन्न भाषाएं अलग-अलग नामकरण का उपयोग करेंगी, उदाहरण के लिए, आप में से जो जावा से परिचित हैं, हम इस आधार या सामान्यीकरण को सुपर क्लास(class) और व्युत्पन्न(derived) या उपवर्ग(class) के रूप में पहचान देंगे। कुछ मामलों में, विशेष वर्ग(class) जो सबसे सामान्यीकृत होता है, उसे अक्सर मूल के रूप में संदर्भित किया जाता है। फिर भी ISA संबंध का एक और उदाहरण कर्मचारी डोमेन से हो सकता है। हम कहते हैं कि प्रबंधक ISA कर्मचारी जिसका अर्थ है कि प्रबंधक किसी कर्मचारी के सभी कार्य कर सकता है, लेकिन एक कर्मचारी कुछ प्रदर्शन कर सकता है; प्रबंधक कुछ कार्य कर सकता है जो कर्मचारी नहीं कर सकता है, संभवतः प्रबंधक कर्मचारियों को काम पर रख सकता है जो कर्मचारी स्वयं नहीं कर सकते हैं। तो, यह आईएसए(ISA) संबंध की मूल अवधारणा है जिसे हम C ++ प्रोग्रामिंग(Programming) के संदर्भ में लाना चाहते हैं। इसलिए, मुझे यह स्पष्ट करना चाहिए कि यदि मैं C ++ में सामान्यीकरण विशेषज्ञता की इस जानकारी को एनकोड करना चाहता हूं, तो हम यह कैसे करेंगे? इसलिए, इन मामलों में सबसे सरल प्रबंधक आईएसए(ISA) कर्मचारी है, जहां हमारे पास सिर्फ दो वर्ग(class) हैं एक दूसरे की विशेषज्ञता है। इसलिए, हम सामान्य रूप से इसे एकल इनहेरिटेंस(Inheritance) के रूप में संदर्भित करते हैं क्योंकि आपके यहां केवल एक संबंध है। तो, हम एक वर्ग(class) लिखते हैं, कर्मचारियों, वर्ग(class) कर्मचारी के लिए प्रतिनिधित्व कहते हैं। यहाँ, मैंने सिर्फ एक तरह का प्रयोग किया है जो आपको एक वर्ग(class) की अधूरी परिभाषा पता है। इसकी परिभाषा नहीं है, यह सिर्फ यह कह रहा है कि कर्मचारी नामक एक वर्ग(class) है क्योंकि हम बाद में डेटा सदस्य और सदस्य फ़ंक्शन विवरणों पर गौर करेंगे। हम केवल कक्षाओं(classes) के बीच संबंध को परिभाषित करने के लिए इच्छुक हैं। तो, यह देखते हुए, अब हम कहते हैं कि प्रबंधक इस फॉर्म के माध्यम से एक कर्मचारी है। तो, यहाँ आप देख सकते हैं कि जो महत्वपूर्ण जोड़ बनाया जा रहा है वह वर्ग(class) प्रबंधक के बाद है, एक विभाजक है: और फिर मैं एक नया शब्द सार्वजनिक कर रहा हूँ और फिर कर्मचारी वर्ग(class) का नाम OOAD की शर्तें, इसे प्रबंधक ISA कर्मचारी या प्रबंधक कर्मचारी से व्युत्पन्न(derived) के रूप में पढ़ा जाएगा। तो, कर्मचारी आधार वर्ग(class) है और प्रबंधक एक व्युत्पन्न(derived) वर्ग(class) है। टू व्हीलर-थ्री व्हीलर वाहन उदाहरण में; इस आरेख को देखते हुए हम वास्तव में संकर विरासत के साथ काम कर रहे हैं। हाइब्रिड(Hybrid) इनहेरिटेंस(Inheritance) एक संदर्भ है जहां एक आधार वर्ग(class) में एक से अधिक विशेषज्ञता है और हम आसानी से सी++ में रूट क्लास(class) के संदर्भ में सांकेतिक शब्दों में बदलना कर सकते हैं जो वाहन है। फिर हम कहते हैं कि ट्वोहेलेर एक वाहन है जिसे ट्वोहेलेर कहते हैं: सार्वजनिक वाहन। Threewheelers Twowheelers द्वारा एक वाहन है: सार्वजनिक वाहन। तो, एक मूल वर्ग(class) है और एक आधार वर्ग(class) है और इसमें दो व्युत्पन्न(derived) वर्ग(class) हैं। अंत में, गुलाब उदाहरण के लिए, हमारे पास एक बहुस्तरीय विरासत के रूप में जाना जाता है क्योंकि यह एक स्तर है, यह एक और स्तर है। तो, एक साथ यह एक बहुस्तरीय विरासत RedRose ISA रोज ISA फूल है। तो, यहाँ फूल आधार वर्ग(class) है और व्युत्पन्न(derived) वर्ग(class) गुलाब है, लेकिन अगर हम अगले जोड़े के संबंध में देखते हैं तो रोज़ आधार वर्ग(class) बन जाता है और रेडरोज़ व्युत्पन्न(derived) वर्ग(class) बन जाता है। इसलिए, क्या एक विशेष वर्ग(class) एक आधार वर्ग(class) है या एक व्युत्पन्न(derived) वर्ग(class) का निर्णय केवल उस वर्ग(class) के आधार पर नहीं किया जा सकता है, यह इस बात पर निर्भर करता है कि वर्ग(class) पदानुक्रम पर कहाँ निहित है। जो वर्ग(class) पत्ती है, वह पत्ती पर है, जो कि तुम नहीं होकिसी भी अन्य वर्ग(class) द्वारा विशेष रूप से व्युत्पन्न(derived) वर्ग(class) के लिए विशेष जानते हैं। एक वर्ग(class) जिसके पास कोई सुपर क्लास(class) या माता-पिता नहीं है, वह मूल रूप से बेस क्लास(class) और रूट क्लास(class) है, लेकिन जो क्लास(class) बीच में मौजूद हैं, उन्हें इनहेरिटेंस(Inheritance) के एक हिस्से के लिए क्लास(class) और व्युत्पन्न(derived) वर्ग(class) के दूसरे हिस्से के लिए क्लास(class) व्युत्पन्न(derived) किया जा सकता है, और हमारे पास वास्तव में विभिन्न जटिल और संकर प्रकार की विरासत संरचना हो सकती है जिन्हें हम C ++ में एन्कोड और समझना चाहते हैं। तो, यहाँ मैं आपको एक अलग तरह का उदाहरण देता हूँ। हम सभी फ़ोन से परिचित हैं, आप सभी फ़ोन का उपयोग करते हैं। इसलिए, मैं यह कह रहा हूं कि, यदि हम केवल 3 सामान्य प्रकार के फोन पर विचार करते हैं जो आज हम उपयोग करते हैं; लैंडलाइन फोन(landline phone), मोबाइल फोन(mobile phone) और स्मार्ट फोन(smart phone), तो हम देख सकते हैं कि वहाँ है; और यह सब मैं यहां करने की कोशिश कर रहा हूं, उस तरह की सहयोगी कार्यक्षमता है जिसे हम मानसिक रूप से इन फोन के साथ जोड़ते हैं। तो, लैंडलाइन फोन(landline phone) को कहें, वह कार्यक्षमता क्या होगी जिसे आप संबद्ध करेंगे; कि आप कॉल कर सकते हैं, आप कॉल का उत्तर दे सकते हैं। एक मोबाइल फोन(mobile phone) के लिए आप स्पष्ट रूप से ऐसा कर सकते हैं, लेकिन आप कई अन्य चीजें भी कर सकते हैं, संभवत: मोबाइल फोन(mobile phone) में आप अंतिम नंबर को रीडायल कर सकेंगे, आप रिंग टोन सेट कर पाएंगे, संभवतः एक पता पुस्तिका है जहां आप अपने संपर्कों को संख्या और नाम से जोड़ सकते हैं और इसी तरह आगे भी कई अन्य होंगे। इसलिए, मैं देख सकता हूं कि लैंडलाइन फोन(landline phone) की बुनियादी कार्यक्षमता भी मोबाइल फोन(mobile phone) से संतुष्ट है, यह पहले से मौजूद है। इसलिए, मैं कह सकता हूं कि एक मोबाइल फोन(mobile phone) आईएसए(ISA) लैंडलाइन फोन; इस ISA का अर्थ यह नहीं है कि यह समान है, लेकिन इसका मतलब है कि मोबाइल फोन सभी कार्यक्षमता को पूरा कर सकता है जो लैंडलाइन फोन(landline phone) को संतुष्ट कर सकता है। इसी तरह, अगर मैं एक स्मार्ट फोन(smart phone) के लिए आता हूं, तो मेरे पास कॉल और जवाब की इन कार्यक्षमताएं होंगी, यह सब फिर से किया जाएगा, लेकिन मेरे पास कुछ अतिरिक्त कार्यक्षमता हो सकती है। आमतौर पर मैं अपने संपर्क के साथ एक तस्वीर को जोड़ सकता हूं और अगर मैं अपने संपर्क के साथ एक तस्वीर को जोड़ता हूं, तो संभवतः कॉल के समय स्मार्ट फोन(smart phone) या जवाब देने के समय, कॉल प्राप्त करना, रीडायल करने के समय यह दिखाने में सक्षम होगा कि तस्वीर। तो, आपस में समानता है; इन विभिन्न प्रकार के फ़ोनों के बीच पर्याप्त समानता है, लेकिन जैसे ही हम एक प्रकार के फ़ोन से दूसरे फ़ोन पर जाते हैं, मोबाइल से लैंडलाइन करते हैं, हम पाते हैं कि कुछ अतिरिक्त कार्यक्षमताएँ हैं जो अंदर आती हैं। जैसे हम मोबाइल से स्मार्ट फ़ोन में जाते हैं अभी तक कुछ और कार्यशीलता आ रही है और इस तरह से फोन एक बहुत अच्छी छोटी विशेषज्ञता सामान्यीकरण पदानुक्रम बनाते हैं। तो, यह सिर्फ आपको सचेत करने के लिए था, बस आपको विभिन्न प्रकार के गैजेट्स और उनके पदानुक्रमों से अवगत कराना था जो संभव हैं। बाद के मॉड्यूल(module) में हम फोन लेना चाहते हैं और वास्तव में इनहेरिटेंस(Inheritance) स्ट्रक्चर का पूरा डिजाइन तैयार करते हैं, लेकिन अब, मुझे C ++ इनहेरिटेंस(Inheritance) का मतलब क्या है के ठोस शब्दार्थ पर आगे बढ़ना चाहिए। इसलिए, सामान्य तौर पर हम दो वर्गों के बारे में बात करेंगे; आधार वर्ग(class) और व्युत्पन्न(derived) वर्ग(class)। तो, आईएसए(ISA) मॉडल है; आईएसए(ISA) बेस व्युत्पन्न(derived)। तो, व्युत्पन्न(derived) वर्ग(class) का नाम व्युत्पन्न(derived) है और बेस क्लास(class) का नाम बेस है और निश्चित रूप से हम पहले ही देख चुके हैं कि यह कैसे C ++ में दर्शाया जाना है। इसलिए, नया परिचय इस सार्वजनिक कीवर्ड(keyword) के रूप में एक कीवर्ड(keyword) के रूप में यह पहले से ही मौजूद है क्योंकि हमने इसे एक्सेस विनिर्देश के लिए उपयोग किया है, लेकिन यहां हम इसे फिर से इनहेरिटेंस(Inheritance) के कुछ विशेष उद्देश्य के लिए उपयोग कर रहे हैं, और हम देखेंगे कि इस विशेष कीवर्ड(keyword) का महत्व क्या है और हम उनके विकल्पों के बारे में बात करेंगे, लेकिन अभी के लिए इसे एक नुस्खे के रूप में लें, अगर मैं यह कहना चाहता हूं कि व्युत्पन्न(derived) आईएसए(ISA) बेस है, तो यह कहने का एक तरीका है, और इस कीवर्ड(keyword) के बाद आप कक्षा का नाम रख सकते हैं जो सामान्यीकृत या आधार वर्ग(class) नाम है जिसे आपको निर्दिष्ट करने की आवश्यकता है। अब, कहा जा रहा है कि निश्चित रूप से एक सवाल का एक बहुत कुछ टोकन क्योंकि हम उम्मीद करेंगे कि आधार में अलग-अलग डेटा सदस्य होंगे। व्युत्पन्न(derived) में अलग-अलग डेटा सदस्य भी होंगे, आधार के अलग-अलग तरीके होंगे, व्युत्पन्न(derived) के भी अलग-अलग तरीके होंगे। बेस(base) का निर्माण करना होगा, व्युत्पन्न(derived) निर्माण करना होगा और इसी तरह। इसलिए, हमें बहुत सावधानी से निर्दिष्ट करने और समझने की आवश्यकता है; का शब्दार्थ क्या है, यह आधार व्युत्पन्न(derived) संबंध कैसे काम करता है? इसलिए, मैं बहुत शुरुआत में रूपरेखा तैयार करना चाहूंगा और फिर हम इनमें से प्रत्येक को उठाएंगे और अधिक विस्तृत चर्चा करने का प्रयास करेंगे। मैं पहले यह रेखांकित करना चाहूंगा कि जब आप C ++ में विरासत के शब्दार्थों के बारे में बात करते हैं, तो ये पहले स्तर के आइटम हैं जिनके बारे में आपको बहुत सावधान रहने की आवश्यकता है। पहली बात यह है, मुझे खेद है; पहली बात डेटा सदस्य हैं। तो, हम कहेंगे कि व्युत्पन्न(derived) वर्ग(class) बेस क्लास(class) के सभी डेटा सदस्यों को विरासत में मिला है। इसलिए, भले ही आपके पास व्युत्पन्न(derived) वर्ग(class) में कोई डेटा सदस्य नहीं है, फिर भी इसमें बहुत सारे डेटा सदस्य होंगे जो बेस क्लास(class) के सभी डेटा सदस्य हैं, लेकिन यह और अधिक डेटा सदस्यों को जोड़ सकता है। मैं इनमें से प्रत्येक के लिए बाद में उदाहरणों पर आऊंगा, लेकिन मैं आपको मूल सिद्धांत बताने की कोशिश कर रहा हूं। इनहेरिटेंस(Inheritance) का मूल सिद्धांत है मेरे पास कुछ अवधारणाएं हैं जो यह है और मैं एक और विशेष अवधारणा प्रदान करने के लिए प्रयास कर रहा हूं जिसे सामान्य अवधारणा को संतुष्ट करने वाली हर चीज को संतुष्ट करने की आवश्यकता है। तो, आधार, व्युत्पन्न(derived) को सब कुछ संतुष्ट करना होगा जो आधार संतुष्ट करता है। तो, इसके लिए सभी डेटा सदस्यों का होना आवश्यक है, लेकिन यह पूरी अवधारणा को और अधिक परिष्कृत करने के लिए स्वयं को जोड़ सकता है। सदस्य फ़ंक्शंस के संदर्भ में, हम देखेंगे कि बहुत महत्वपूर्ण विचार हैं जो आते हैं। पहला भाग एक ही है कि एक व्युत्पन्न(derived) वर्ग(class) बेस क्लास(class) के सभी सदस्य कार्यों को विरासत में देता है, लेकिन फिर एक बड़ा अंतर होता है; जैसा कि आप एक सदस्य फ़ंक्शन को विरासत में लेते हैं, आपके पास इसे फिर से लागू करने का विकल्प है जो इसे वास्तव में हस्ताक्षर किए बिना बदल रहा है। आप एक ही प्रकार के एल्गोरिथ्म के साथ फिर से उसी फ़ंक्शन को परिभाषित करना चाहते हैं और यदि आप ऐसा करते हैं, तो आप कहते हैं कि आप बेस क्लास(class) में सदस्य फ़ंक्शन को ओवरराइड कर रहे हैं; बहुत सतर्क रहें क्योंकि यह अवधारणा ओवरलोडिंग(overloading) की अवधारणा के बेहद करीब लगती है और इसलिए, इस बात की अच्छी संभावना है कि आप इसे ओवरलोडिंग(overloading) के साथ भ्रमित करना शुरू कर देंगे और जो चीजें सबसे ज्यादा खराब करती हैं, वह वास्तव में विरासत के संदर्भ में ओवरलोडिंग(overloading) भी है। अंतर तब होता है जब आप एक फ़ंक्शन को उसी हस्ताक्षर से पुनर्परिभाषित करते हैं जो ओवरराइडिंग होता है। जब आप किसी फ़ंक्शन को विभिन्न हस्ताक्षर के साथ पुनर्परिभाषित करते हैं तो उसे ओवरलोडिंग(overloading) कहा जाता है। तो, ये अलग-अलग शब्दार्थ हैं जिन्हें हमें विरासत के तहत सदस्य कार्यों के व्यवहार के संदर्भ में समझने की आवश्यकता होगी। अगला पहलू जिसे हमें देखने की आवश्यकता है वह एक्सेस विनिर्देश के संदर्भ में है। अब, स्वाभाविक रूप से एक्सेस विनिर्देश के संदर्भ में हम जानते हैं कि निजी पहुंच है और सार्वजनिक पहुंच है। निजी पहुंच वर्ग(class) के सदस्यों के लिए है, सार्वजनिक पहुंच हर किसी के लिए है। इसलिए, बेस क्लास(class) का एक व्युत्पन्न(derived) वर्ग(class) निश्चित रूप से उस बेस क्लास(class) का हिस्सा नहीं है। इसलिए, एक व्युत्पन्न(derived) वर्ग(class) आधार वर्ग(class) के निजी सदस्यों तक नहीं पहुँच सकता है। यह केवल सार्वजनिक सदस्यों तक ही पहुंच बना सकता है, लेकिन फिर हम देखेंगे कि इससे बहुत मुश्किलें आएंगी क्योंकि विशेषज्ञता के शब्दार्थ जिसे हम विशेष रूप से ओवरराइडिंग के संदर्भ में एक साथ रखने की कोशिश कर रहे हैं, अगर यह व्युत्पन्न(derived) वर्ग(class) है, तो कोड करना बेहद मुश्किल हो जाएगा। आधार वर्ग(class) के आंतरिक लोगों के लिए कोई पहुंच नहीं है। इसलिए, एक नए प्रकार के एक्सेस स्पेसियर(access specifier) के साथ, संरक्षित एक्सेस स्पेसियर(access specifier) विरासत के एक अच्छे शब्दार्थ का समर्थन करने के लिए बनाया गया है। तो, हमें इस बारे में जानना और समझना होगा कि यह तीसरी प्रकार की दृश्यता या पहुंच विनिर्देश क्या है जो विरासत में समर्थित है। अंत में, स्वाभाविक रूप से ऑब्जेक्टस(objects) को नष्ट होने की आवश्यकता होती है और जब हमारे पास आधार और व्युत्पन्न(derived) वर्ग(class) के बीच विरासत होती है, तो एक व्युत्पन्न(derived) वर्ग(class) उदाहरण के लिए एक व्युत्पन्न(derived) वर्ग(class) निर्माता की आवश्यकता होगी, लेकिन बदले में व्युत्पन्न(derived) वर्ग(class) निर्माता को एक आधार का निर्माण करना होगा बेस क्लास(class) कंस्ट्रक्टर को कॉल करके क्लास(class) ऑब्जेक्ट(object)। तो, यह बुनियादी समझ है कि हमें यह बनाने की आवश्यकता होगी कि बेस क्लास(class) ऑब्जेक्ट(object) और व्युत्पन्न(derived) क्लास(class) ऑब्जेक्ट(object) कैसे आपस में संबंधित होते हैं और वे कैसे बातचीत कर सकते हैं। इसी प्रकार, जब एक व्युत्पन्न(derived) वर्ग(class) वस्तु को नष्ट करने की आवश्यकता होगी, तब आधार वर्ग(class) के विध्वंसक को आह्वान करना होगा, ताकि आप व्युत्पन्न(derived) वर्ग(class) वस्तु के आधार वर्ग(class) भाग को नष्ट कर सकें। इसलिए, यह सभी प्रमुख शब्दार्थों का एक सिरा है, जिसे हमें समझने के संदर्भ में समझने की आवश्यकता है कि विरासत का उपयोग कैसे करें और सी ++ भाषा में बहुत ही कुशल तरीके से पदानुक्रम के विभिन्न वास्तविक विश्व परिदृश्य को कैसे मॉडल करें। इसलिए संक्षेप में, हमारे पास आईएसए(ISA) संबंध की ओओएडी(OOAD) पदानुक्रम अवधारणा और वस्तु उन्मुख विश्लेषण और डिजाइन की श्रेणी पदानुक्रम अवधारणा का पुनर्मुद्रण है, और हमने सी++ में विरासत की मूल धारणा पेश की है। और ध्यान दिया कि शब्दार्थ के विभिन्न पहलू क्या हैं जिन्हें हमें समझने की आवश्यकता है, कि हमें वास्तव में मास्टर होने की आवश्यकता है ताकि हम विरासत का प्रभावी तरीके से उपयोग कर सकें।