Heim >Backend-Entwicklung >C++ >Arten von Polymorphismus – vorübergehend, enthalten, parametrisiert und erzwungen

Arten von Polymorphismus – vorübergehend, enthalten, parametrisiert und erzwungen

WBOY
WBOYnach vorne
2023-09-23 10:21:041386Durchsuche

多态性的类型 - 临时、包含、参数化和强制

Hier werden wir verschiedene Arten von Polymorphismus sehen. Arten von -

  • Ad-Hoc
  • enthalten
  • Parametrisierung
  • Force

Ad-Hoc-Polymorphismus wird als Überladung bezeichnet. Dadurch können Funktionen mit demselben Namen für verschiedene Typen unterschiedlich agieren. Sowohl Funktionen als auch Operatoren können überlastet sein. Einige Sprachen unterstützen keine Operatorüberladung, eine Funktionsüberladung ist jedoch häufig.

Beispiel

#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;
}

Ausgabe

Addition of numbers: 9
Addition of Strings: helloWorld

Das Enthalten von Polymorphismus wird als Subtypisierung bezeichnet. Dies ermöglicht die Verwendung von Basisklassenzeigern und Referenzen, um auf abgeleitete Klassen zu verweisen. Dies ist Laufzeitpolymorphismus. Wir kennen den tatsächlichen Objekttyp vor der Ausführung nicht. Wir benötigen virtuelle Funktionen in C++, um diesen Inklusionspolymorphismus zu erreichen.

Beispiel

#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();
}

Ausgabe

This is base class.
This is derived class.

Das Erzwingen von Polymorphismus wird als Cast bezeichnet. Diese Art von Polymorphismus tritt auf, wenn ein Objekt oder Grundelement in einen anderen Typ konvertiert wird. Es gibt zwei Arten des Gießens. Implizite Konvertierungen werden mit dem Compiler selbst durchgeführt, explizite Konvertierungen erfolgen mit const_cast,dynamic_cast usw.

Beispiel

#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);
}

Ausgabe

Value is: 100
Value is: 50

Parametrischer Polymorphismus wird als frühe Bindung bezeichnet. Diese Art von Polymorphismus ermöglicht die Verwendung desselben Codes für verschiedene Typen. Wir können es mithilfe von Vorlagen erhalten.

Beispiel

#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(&#39;A&#39;, &#39;X&#39;) << endl;
}

Ausgabe

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

Das obige ist der detaillierte Inhalt vonArten von Polymorphismus – vorübergehend, enthalten, parametrisiert und erzwungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen