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

बहुरूपता के प्रकार - तदर्थ, समावेशन, पैरामीट्रिक और जबरदस्ती

यहां हम विभिन्न प्रकार के बहुरूपता देखेंगे। प्रकार हैं -

  • तदर्थ
  • समावेश
  • पैरामीट्रिक
  • जबरदस्ती

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

उदाहरण

#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 << "Addition of numbers: " << add(2, 7) << endl;
   cout << "Addition of Strings: " << add("hello", "World") << endl;
}

आउटपुट

Addition of numbers: 9
Addition of Strings: helloWorld

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

उदाहरण

#include<iostream>
using namespace std;
class Base {
   public:
      virtual void print() {
         cout << "This is base class." << endl;
      }
};
class Derived : public Base {
   public:
      void print() {
         cout << "This is derived class." << endl;
      }
};
int main() {
   Base *ob1;
   Base base_obj;
   Derived derived_obj;
   ob1 = &base_obj; //object of base class
   ob1->print();
   ob1 = &derived_obj; //same pointer to point derived object
   ob1->print();
}

आउटपुट

This is base class.
This is derived class.

जबरदस्ती बहुरूपता को कास्टिंग कहा जाता है। इस प्रकार का बहुरूपता तब होता है जब किसी वस्तु या आदिम को किसी अन्य प्रकार में डाला जाता है। कास्टिंग दो प्रकार की होती है। निहित कास्टिंग स्वयं कंपाइलर का उपयोग करके किया जाता है, और स्पष्ट कास्ट कॉन्स्ट_कास्ट, डायनामिक_कास्ट आदि का उपयोग करके किया जाता है।

उदाहरण

#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 << "Value is: " << x << endl;
}
int main() {
   Integer x = 50;
   display(100);
   display(x);
}

आउटपुट

Value is: 100
Value is: 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 प्रोग्राम में विभिन्न प्रकार के भावों को समझाइए

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

  1. C भाषा में प्राथमिक डेटा प्रकार क्या हैं?

    सी कंपाइलर चार मूलभूत डेटा प्रकारों का समर्थन करते हैं। वे इस प्रकार हैं - पूर्णांक चरित्र फ्लोटिंग - पॉइंट डबल सटीक फ़्लोटिंग पॉइंट प्राथमिक डेटा प्रकार अभिन्न डेटा प्रकार इंटीग्रल डेटा टाइप्स का इस्तेमाल पूरे नंबर और कैरेक्टर को स्टोर करने के लिए किया जाता है। इसे आगे दो प्रकारों में वर्गीकृ

  1. सी/सी ++ में तर्क जबरदस्ती?

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