मान लीजिए मैं हमेशा की तरह class Animal
सार वर्ग और class Dog : public Animal
class Cat : public Animal
यह एक ठोस वर्ग आप से एक वस्तु का दृष्टांत कर सकते हैं बनाता है कि है। मान लीजिए कि आपके पास foo(Animal a)
फ़ंक्शन है, या तो बिल्लियों या कुत्ते को ऑब्जेक्ट्स के रूप में लेना। सी ++ शुरुआती दिनों में सी को संकलित करता था, और वहां वस्तुओं को बनाए रखने के लिए vTable
का निर्माण करेगा।अवधारणाओं को स्पष्ट करने से पहले बहुरूपता और विरासत के लिए सी मुहावरे क्या थे?
लेकिन मेरे एक छात्र ने मुझसे यह प्रश्न पूछा: इन अवधारणाओं से पहले प्रोग्रामर के बीच सामान्य बात थी, वे वास्तव में सी में अपने दिन-प्रति-दिन कोडिंग में कैसे करते थे? सी में इन अवधारणाओं को प्रोग्राम करने के लिए बेवकूफ तरीका क्या था?
मैंने लिनक्स कर्नेल और अन्य ओएसएस परियोजनाओं के माध्यम से निकल लिया है, लेकिन मुझे एक स्पष्ट पैटर्न नहीं मिला है: कभी-कभी यह यूनियन (विभिन्न structs के लिए), कभी-कभी यह फ़ंक्शन पॉइंटर्स इत्यादि होता है लेकिन मैं चाहता हूं जो किया है और एक वाक्य में सी
साथ बहुत अनुभव है गया है उद्योग में जानकार लोगों से एक सीधा जवाब की तरह: विरासत और बहुरूपता के लिए मुहावरेदार सी क्या है? इस तरह के स्कूल के कार्य के लिए लिखा उन लोगों के रूप
1) स्मार्ट यूनियन 2) फ़ंक्शन पॉइंटर्स स्ट्रक्चर/यूनियन सदस्यों के रूप में। उदाहरण के लिए लिनक्स डिवाइस ड्राइवरों को कैसे नियंत्रित करता है (ब्लॉक) कैसे करें। – wildplasser
मुझे नहीं लगता कि ऐसा करने का एक बेवकूफ तरीका था, AFAIK जो सी ++ के विक्रय बिंदुओं में से एक था। यह आलेख भी दिमाग में आता है http://www.yosefk.com/blog/oo-c-is-passable.html (सी में ओओ अनुकरण करने पर) –
@ विल्डप्लेसर: धन्यवाद। "यूनियनों" से अलग "स्मार्ट यूनियन" हैं? मैं इस अवधारणा से परिचित नहीं हूं, क्योंकि "पॉइंटर्स" हैं और फिर "स्मार्ट पॉइंटर्स" हैं। –