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

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

WBOY
Freigeben: 2023-09-23 10:21:04
nach vorne
1369 Leute haben es durchsucht

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

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;
}
Nach dem Login kopieren

Ausgabe

Addition of numbers: 9
Addition of Strings: helloWorld
Nach dem Login kopieren

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();
}
Nach dem Login kopieren

Ausgabe

This is base class.
This is derived class.
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

Ausgabe

Value is: 100
Value is: 50
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

Ausgabe

Max of (156, 78): 156
Max of (A, X): X
Nach dem Login kopieren

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage