Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

बहुरूपता के प्रकार - एड-हॉक, समावेशन, पैरामीट्रिक और कर्सन


यहां हम बहुरूपता (पॉलीमॉर्फिज्म) के विभिन्न प्रकार देखेंगे। प्रकार हैं:

  • एड-हॉक (Ad-Hoc)
  • समावेशन (Inclusion)
  • पैरामीट्रिक (Parametric)
  • कर्सन (Coercion)

एड-हॉक बहुरूपता को ओवरलोडिंग कहा जाता है। यह समान नाम वाले फ़ंक्शन को विभिन्न प्रकारों के लिए अलग-अलग व्यवहार करने की अनुमति देता है। फ़ंक्शन और ऑपरेटर दोनों को ओवरलोड किया जा सकता है। कुछ भाषाएं ऑपरेटर ओवरलोडिंग का समर्थन नहीं करतीं, लेकिन फ़ंक्शन ओवरलोडिंग आम है।

उदाहरण

#include<iostream>
using namespace std;
int add(int a, int b) {
    return a + b;
}
string add(string a, string b) {
    return a + b; // जोड़ें (concatenate)
}
int main() {
    cout << "संख्याओं का योग: " << add(2, 7) << endl;
    cout << "स्ट्रिंग्स का योग: " << add("hello", "World") << endl;
}

आउटपुट

संख्याओं का योग: 9
स्ट्रिंग्स का योग: helloWorld

समावेशन बहुरूपता को सबटाइपिंग (उपप्रकार) कहा जाता है। यह बेस क्लास पॉइंटर्स और रेफरेंस का उपयोग करके डेराइव्ड क्लासेज को इंगित करने की अनुमति देता है। यह रनटाइम बहुरूपता है। हम तब तक वास्तविक ऑब्जेक्ट के प्रकार को नहीं जानते जब तक यह निष्पादित नहीं हो रहा हो। C++ में इसे प्राप्त करने के लिए हमें वर्चुअल फ़ंक्शन की आवश्यकता होती है।

उदाहरण

#include<iostream>
using namespace std;
class Base {
    public:
        virtual void print() {
            cout << "यह बेस क्लास है।" << endl;
        }
};
class Derived : public Base {
    public:
        void print() {
            cout << "यह डेराइव्ड क्लास है।" << endl;
        }
};
int main() {
    Base *ob1;
    Base base_obj;
    Derived derived_obj;
    ob1 = &base_obj; // बेस क्लास का ऑब्जेक्ट
    ob1->print();
    ob1 = &derived_obj; // समान पॉइंटर डेराइव्ड ऑब्जेक्ट को इंगित करता है
    ob1->print();
}

आउटपुट

यह बेस क्लास है।
यह डेराइव्ड क्लास है।

कर्सन बहुरूपता को कास्टिंग (प्रकारांतरण) कहा जाता है। इस प्रकार की बहुरूपता तब होती है जब किसी ऑब्जेक्ट या प्रिमिटिव को किसी अन्य प्रकार में कास्ट किया जाता है। कास्टिंग के दो प्रकार हैं। इम्प्लिसिट कास्टिंग कंपाइलर द्वारा स्वयं की जाती है, और एक्सप्लिसिट कास्ट const_cast, dynamic_cast आदि का उपयोग करके की जाती है।

उदाहरण

#include<iostream>
using namespace std;
class Integer {
    int val;
    public:
        Integer(int x) : val(x) {
        }
        operator int() const {
            return val;
        }
};
void display(int x) {
    cout << "मान है: " << x << endl;
}
int main() {
    Integer x = 50;
    display(100);
    display(x);
}

आउटपुट

मान है: 100
मान है: 50

पैरामीट्रिक बहुरूपता को अर्ली बाइंडिंग (प्रारंभिक बंधन) कहा जाता है। इस प्रकार की बहुरूपता विभिन्न प्रकारों के लिए कोड के समान टुकड़े का उपयोग करने की अनुमति देती है। हम इसे टेम्प्लेट्स का उपयोग करके प्राप्त कर सकते हैं।

उदाहरण

#include<iostream>
using namespace std;
template <class T>
T maximum(T a, T b) {
    if(a > b) {
        return a;
    } else {
        return b;
    }
}
int main() {
    cout << "Max of (156, 78): " << maximum(156, 78) << endl;
    cout << "Max of (A, X): " << maximum('A', 'X') << endl;
}

आउटपुट

Max of (156, 78): 156
Max of (A, X): X

  1. C प्रोग्राम में विभिन्न प्रकार के एक्सप्रेशन्स समझें C प्रोग्राम में विभिन्न प्रकार के एक्सप्रेशन्स समझें

    एक एक्सप्रेशन ऑपरेटर्स और ऑपरेंड्स का संयोजन है जो एक सिंगल वैल्यू में कम हो जाता है। एक ऑपरेशन एक डेटा आइटम पर किया जाता है जिसे ऑपरेंड कहा जाता है। एक ऑपरेटर डेटा पर की जाने वाली ऑपरेशन को इंगित करता है। उदाहरण के लिए, z = 3+2*1 → z = 5 प्राइमरी एक्सप्रेशन्स - यह एक ऑपरेंड है जो एक नाम, कॉन्

  1. C भाषा में प्राथमिक डेटा टाइप्स (Primary Data Types) क्या हैं? C भाषा में प्राथमिक डेटा टाइप्स (Primary Data Types) क्या हैं?

    C कंपाइलर्स चार मौलिक डेटा टाइप्स का समर्थन करते हैं: इंटीजर (Integer) कैरेक्टर (Character) फ्लोटिंग-पॉइंट (Floating-point) डबल प्रिसिजन फ्लोटिंग-पॉइंट (Double precision floating-point) प्राथमिक डेटा टाइप्स इंटीग्रल डेटा टाइप (Integral Data Type) इंटीग्रल डेटा टाइप्स पूरे नंबर और कैरेक्टर्स स्टो

  1. C/C++ में तर्क बलात्कार (Argument Coercion) C/C++ में तर्क बलात्कार (Argument Coercion)

    यहां हम C या C++ में तर्क बलात्कार के बारे में देखेंगे। तर्क बलात्कार एक तकनीक है जिसके द्वारा कंपाइलर तर्कों को एक प्रकार से दूसरे प्रकार में अंतर्निहित रूप से परिवर्तित कर सकता है। यह तर्क प्रचार नियम का पालन करता है। यदि एक तर्क निम्न डेटाटाइप का है, तो उसे उच्च डेटाटाइप में परिवर्तित किया जा सक