Virtuelle Funktionen und Vererbung ermöglichen Polymorphismus in der objektorientierten Programmierung: Durch die Deklaration virtueller Funktionen können abgeleitete Klassen Basisklassenmethoden überschreiben und sie basierend auf dem Laufzeittyp des Objekts aufrufen. Durch Vererbung wird eine Klassenhierarchie erstellt, und abgeleitete Klassen können auf Basisklassendaten und -methoden zugreifen und diese erweitern. Durch die polymorphe Vererbung kann eine abgeleitete Klasse von mehreren Basisklassen erben, und die meisten abgeleiteten Objekte können virtuelle Funktionen aller Basisklassen verwenden. Die Reihenfolge, in der virtuelle Funktionen aufgerufen werden, hängt von der Reihenfolge ab, in der die Klasse deklariert wird.
In der objektorientierten Programmierung sind virtuelle Funktionen und Vererbung Schlüsselelemente des Polymorphismus. Mithilfe virtueller Funktionen kann eine abgeleitete Klasse die Methoden einer Basisklasse überschreiben und zur Laufzeit die richtige Implementierung aufrufen. Durch Vererbung wird eine hierarchische Beziehung zwischen Klassen hergestellt, sodass abgeleitete Klassen auf Daten und Methoden in der Basisklasse zugreifen und diese erweitern können. Dieser Artikel befasst sich mit dem Mechanismus virtueller Funktionen und der Vererbung in C++ und veranschaulicht ihn anhand praktischer Fälle.
Eine virtuelle Funktion ist eine Mitgliedsfunktion, die als virtuell
deklariert ist. Wenn eine virtuelle Funktion von einer abgeleiteten Klasse aufgerufen wird, wird die korrekte Implementierung der Funktion basierend auf dem tatsächlichen Laufzeittyp des Objekts aufgerufen. virtual
。当从派生类调用虚拟函数时,将根据对象的实际运行时类型调用该函数的正确实现。
声明虚拟函数:
class Base { public: virtual void display() { cout << "Base class display" << endl; } };
重写派生类中的虚拟函数:
class Derived : public Base { public: virtual void display() { // 重写 display 方法 cout << "Derived class display" << endl; } };
继承允许派生类从基类继承数据和方法。
继承语法:
class Derived : public Base { // 派生类声明 };
派生类可以访问和使用基类中的所有非私有成员,包括虚拟函数。它也可以在派生类中重写基类的虚拟函数。
多态继承:当一个派生类从多个基类继承时。
在多态继承中,最派生类的对象可以访问和使用所有基类的虚拟函数。跨多个继承层次调用的顺序取决于类的声明顺序。
实战案例:
考虑以下代码,展示了多态继承的使用:
#include <iostream> using namespace std; class Shape { public: virtual void draw() { cout << "Drawing shape" << endl; } }; class Circle : public Shape { public: virtual void draw() { cout << "Drawing circle" << endl; } }; class Square : public Shape { public: virtual void draw() { cout << "Drawing square" << endl; } }; int main() { Shape* shapes[] = { new Circle(), new Square() }; for (Shape* shape : shapes) { shape->draw(); } return 0; }
输出:
Drawing circle Drawing square
在该例中,Circle
和 Square
类从基类 Shape
继承了 draw
虚拟函数。当调用 draw
Circle The Die Klassen
und Square
erben die virtuelle Funktion draw
von der Basisklasse Shape
. Wenn die Funktion draw
aufgerufen wird, ruft sie die entsprechende Implementierung basierend auf dem Typ des tatsächlichen Objekts auf. Dies zeigt, wie die polymorphe Vererbung es einer abgeleiteten Klasse ermöglicht, von einer Basisklasse geerbte virtuelle Funktionen zu überschreiben und zur Laufzeit eine korrekte objektspezifische Implementierung bereitzustellen. 🎜Das obige ist der detaillierte Inhalt vonVirtuelle C++-Funktionen und Vererbung: Die Geheimnisse der polymorphen Vererbung verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!