Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich Polymorphismus, um Unterschiede zwischen verschiedenen Objekten in C++ zu behandeln?

Wie verwende ich Polymorphismus, um Unterschiede zwischen verschiedenen Objekten in C++ zu behandeln?

WBOY
WBOYOriginal
2024-06-05 11:50:21532Durchsuche

Polymorphismus ist eine objektorientierte Programmierfunktion, die es Objekten ermöglicht, sich zur Laufzeit unterschiedlich zu verhalten, selbst wenn sie dieselbe übergeordnete Klasse haben. In C++ wird Polymorphismus durch virtuelle Funktionen und Vererbung erreicht: Definieren Sie eine Basisklasse und eine abgeleitete Klasse: Die Basisklasse enthält virtuelle Funktionen, und die abgeleitete Klasse erbt die Basisklasse und überschreibt die virtuellen Funktionen. Verwenden Sie Zeiger oder Referenzen: Speichern Sie die Adresse des Basisklassenobjekts über einen Zeiger oder eine Referenz und greifen Sie zur Laufzeit auf Objekte verschiedener abgeleiteter Klassen zu. Aufruf über eine virtuelle Funktion: Der Aufruf einer virtuellen Funktion in der Basisklasse ruft zur Laufzeit die überschriebene Funktion der abgeleiteten Klasse auf. Praktischer Fall: In der Formklassenhierarchie erben die Klassen „Circle“ und „Rechteck“ die Klasse „Shape“ und überschreiben die virtuellen Funktionen „area()“, „perimeter()“ und „draw()“, sodass diese Formen in praktischen Anwendungen des Polymorphismus in C++ verwendet werden können

C++ 中如何使用多态性处理不同对象的差异?

Was ist Polymorphismus?

Polymorphismus ist eine Funktion in objektorientierten Programmiersprachen, die es Objekten ermöglicht, sich zur Laufzeit unterschiedlich zu verhalten, selbst wenn sie dieselbe übergeordnete Klasse haben. In C++ wird Polymorphismus durch virtuelle Funktionen und Vererbung erreicht.

Wie nutzt man Polymorphismus?

Basisklassen und abgeleitete Klassen definieren: Eine Basisklasse definieren, die virtuelle Funktionen enthält. Abgeleitete Klassen erben die Basisklasse und überschreiben virtuelle Funktionen, um unterschiedliche Implementierungen bereitzustellen.

    Zeiger oder Referenz verwenden:
  1. Speichern Sie die Adresse des Basisklassenobjekts über einen Zeiger oder eine Referenz. Dies ermöglicht den Zugriff auf Objekte verschiedener abgeleiteter Klassen zur Laufzeit.
  2. Aufruf über virtuelle Funktion:
  3. Rufen Sie eine virtuelle Funktion in der Basisklasse auf und sie ruft zur Laufzeit die überschriebene Funktion der abgeleiteten Klasse auf, abhängig vom tatsächlichen Objekttyp.
  4. Praktischer Fall: Shape-Klassenhierarchie
Basisklasse Shape

class Shape {
public:
  virtual double area() = 0;
  virtual double perimeter() = 0;
  virtual void draw() = 0;
};

Abgeleitete Klassen Kreis und Rechteck

class Circle : public Shape {
public:
  ...  // 构造函数和数据成员
  virtual double area() override;
  virtual double perimeter() override;
  virtual void draw() override;
};

class Rectangle : public Shape {
public:
  ...  // 构造函数和数据成员
  virtual double area() override;
  virtual double perimeter() override;
  virtual void draw() override;
};

Verwenden Sie Polymorphismus, um Fläche und Umfang zu berechnen

vector<Shape*> shapes;
shapes.push_back(new Circle(...));
shapes.push_back(new Rectangle(...));

for (auto& shape : shapes) {
  cout << "面积: " << shape->area() << endl;
  cout << "周长: " << shape->perimeter() << endl;
  shape->draw();
}

Vorteile:

Vereinfachen Sie den Code und halten Sie die Basisklasse und die abgeleitete Klasse entkoppelt.

Verbessern Sie die Skalierbarkeit und Wartbarkeit des Codes.

Ermöglicht die dynamische Handhabung verschiedener Objekte zur Laufzeit.

Das obige ist der detaillierte Inhalt vonWie verwende ich Polymorphismus, um Unterschiede zwischen verschiedenen Objekten in C++ zu behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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