Heim > Artikel > Backend-Entwicklung > Virtuelle C++-Funktionen und abstrakte Basisklassen: Erkundung der Grundlagen der polymorphen Programmierung
In C++ wird Polymorphismus durch virtuelle Funktionen und abstrakte Basisklassen erreicht. Virtuelle Funktionen ermöglichen das Überschreiben von Basisklassenfunktionen in abgeleiteten Klassen, während abstrakte Basisklassen rein virtuelle Funktionen enthalten, wodurch abgeleitete Klassen gezwungen werden, Implementierungen bereitzustellen. Dies ermöglicht eine polymorphe Programmierung, indem ein Basisklassenzeiger verwendet wird, um auf ein abgeleitetes Klassenobjekt zuzugreifen und die entsprechende Methode basierend auf dem tatsächlichen Typ des Objekts aufzurufen.
Polymorphismus ist ein Schlüsselkonzept in der objektorientierten Programmierung (OOP), das es Objekten ermöglicht, auf dieselbe Nachricht auf unterschiedliche Weise zu reagieren. In C++ verwenden wir virtuelle Funktionen und abstrakte Basisklassen, um Polymorphismus zu erreichen.
Definition: Eine virtuelle Funktion ist eine Mitgliedsfunktion, die in einer Basisklasse deklariert, aber nur in einer abgeleiteten Klasse implementiert ist. Wenn eine virtuelle Funktion über einen Basisklassenzeiger aufgerufen wird, wird die Implementierung der abgeleiteten Klasse aufgerufen.
Syntax:
class Base { public: virtual void print() const; }; class Derived : public Base { public: virtual void print() const override; };
Das Schlüsselwort override
gibt an, dass wir die virtuelle Funktion der Basisklasse überschreiben. override
关键字表明我们正在覆盖基类的虚拟函数。
定义:抽象基类是至少包含一个纯虚函数的基类。纯虚函数没有定义,仅由派生类实现。
语法:
class Base { public: virtual void f() const = 0; };
考虑一个形状层次结构,其中每个形状类都具有计算其面积的 area()
Definition:
Eine abstrakte Basisklasse ist eine Basisklasse, die mindestens eine rein virtuelle Funktion enthält. Rein virtuelle Funktionen sind nicht definiert und werden nur durch abgeleitete Klassen implementiert.Syntax:
class Shape { public: virtual double area() const = 0; };Praktisches Beispiel: FormklassenhierarchieStellen Sie sich eine Formhierarchie vor, in der jede Formklasse über eine
area()
-Methode verfügt, die ihre Fläche berechnet.
class Circle : public Shape { public: Circle(double radius) : _radius(radius) {} double area() const override { return M_PI * _radius * _radius; } private: double _radius; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : _width(width), _height(height) {} double area() const override { return _width * _height; } private: double _width, _height; };
int main() { Shape* s1 = new Circle(5); Shape* s2 = new Rectangle(3, 4); std::cout << "Circle area: " << s1->area() << std::endl; std::cout << "Rectangle area: " << s2->area() << std::endl; return 0; }
Circle area: 78.5398 Rectangle area: 12🎜Ausgabe: 🎜rrreee🎜Vorteile🎜🎜🎜Alle Bietet polymorphen Zugriff auf abgeleitete Klassenobjekte. 🎜🎜 Code verbessern Wiederverwendbarkeit und Skalierbarkeit🎜🎜Unterstützung der Code-Entkopplung und Wartung🎜🎜
Das obige ist der detaillierte Inhalt vonVirtuelle C++-Funktionen und abstrakte Basisklassen: Erkundung der Grundlagen der polymorphen Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!