हाँ, आप सही हैं, सी ++ में पॉलिमॉर्फिज्म के दो मान्यता प्राप्त "प्रकार" हैं। और वे मतलब काफी आप क्या सोचते हैं वे मतलब
गतिशील बहुरूपता
क्या सी #/जावा/OOP लोग आमतौर पर बस "बहुरूपता" का उल्लेख है। यह अनिवार्य रूप से उप-वर्ग है, या तो बेस क्लास से प्राप्त होता है और एक या अधिक वर्चुअल फ़ंक्शंस को ओवरराइड करता है, या इंटरफेस को कार्यान्वित करता है।
स्टेटिक बहुरूपता
संकलन समय पर होता है (जो सी ++ में सार आधार वर्ग से संबंधित आभासी कार्यों अधिभावी द्वारा किया जाता है), और ducktyping की विविधता माना जा सकता है। यहां विचार यह है कि पूरी तरह से असंबंधित होने के बावजूद, एक ही अवधारणा का प्रतिनिधित्व करने के लिए एक समारोह में विभिन्न प्रकारों का उपयोग किया जा सकता है।एक बहुत ही सरल उदाहरण के लिए, इस
template <typename T>
T add(const T& lhs, const T& rhs) { return lhs + rhs; }
पर विचार करें इस गतिशील बहुरूपता किया गया था, तो हम अपने तर्कों के रूप में "IAddable" वस्तु किसी तरह का लेने के लिए add
समारोह को परिभाषित करेगा। कोई भी ऑब्जेक्ट जो उस इंटरफ़ेस को कार्यान्वित करता है (या उस बेस क्लास से प्राप्त होता है) का उपयोग उनके विभिन्न कार्यान्वयन के बावजूद किया जा सकता है, जो हमें पॉलीमोर्फिक व्यवहार देता है। हमें परवाह नहीं है कि किस प्रकार का हमें पास किया जाता है, जब तक कि यह किसी प्रकार का "एक साथ जोड़ा जा सकता है" इंटरफ़ेस लागू करता है। हालांकि, संकलक नहीं वास्तव में पता है किस प्रकार कार्य करने के लिए दिया जाता है। सही प्रकार केवल कार्यावधि में जाना जाता है, इसलिए इस गतिशील बहुरूपता है।
यहां, हालांकि, हमें किसी भी चीज़ से प्राप्त करने की आवश्यकता नहीं है, प्रकार T
को केवल +
ऑपरेटर को परिभाषित करना होगा। इसके बाद स्थैतिक डाला जाता है। तो संकलन समय पर, हम किसी भी वैध प्रकार के बीच स्विच कर सकते हैं जब तक कि वे व्यवहार व्यवहार करें (जिसका अर्थ है कि वे हमें आवश्यक सदस्यों को परिभाषित करते हैं)
यह बहुरूपता का एक और रूप है। सिद्धांत रूप में, प्रभाव वही है: फ़ंक्शन उस अवधारणा के किसी भी कार्यान्वयन के साथ काम करता है जिसमें हम रुचि रखते हैं। हमें कोई परवाह नहीं है कि जिस वस्तु पर हम काम करते हैं वह एक स्ट्रिंग, एक int, एक फ्लोट या जटिल संख्या है, जब तक यह लागू करता है "एक साथ जोड़ा जा सकता है" अवधारणा।
के बाद से इस्तेमाल किया प्रकार (संकलन समय पर) स्थिर में जाना जाता है, इस स्थिर बहुरूपता के रूप में जाना जाता है। और जिस तरह से स्थैतिक बहुरूपता प्राप्त की जाती है वह टेम्पलेट्स और फ़ंक्शन ओवरलोडिंग के माध्यम से होती है।
हालांकि, जब एक सी ++ प्रोग्रामर केवल पॉलिमॉर्फिज्म कहता है, तो वे आम तौर पर गतिशील/रनटाइम पॉलीमोर्फिज्म को संदर्भित करते हैं।
(ध्यान दें कि यह सभी भाषाओं के लिए जरूरी नहीं है। एक कार्यात्मक प्रोग्रामर का अर्थ आम तौर पर स्थिर पॉलिमॉर्फिज्म जैसा होता है जब वह शब्द का उपयोग करता है - कुछ प्रकार के पैरामीरिज्ड प्रकारों का उपयोग करके सामान्य कार्यों को परिभाषित करने की क्षमता, टेम्पलेट के समान)
http://www.developer.com/java/other/article.php/1015511 – daydreamer