Heim  >  Artikel  >  Backend-Entwicklung  >  Virtuelle C++-Funktionen und Vererbung: Die Geheimnisse der polymorphen Vererbung verstehen

Virtuelle C++-Funktionen und Vererbung: Die Geheimnisse der polymorphen Vererbung verstehen

WBOY
WBOYOriginal
2024-04-28 12:30:02659Durchsuche

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.

C++ 虚拟函数与继承:理解多态继承中的奥秘

Virtuelle C++-Funktionen und Vererbung: Die Geheimnisse der polymorphen Vererbung verstehen

Übersicht

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.

Virtuelle Funktion

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

在该例中,CircleSquare 类从基类 Shape 继承了 draw 虚拟函数。当调用 draw

Virtuelle Funktionen deklarieren:🎜rrreee🎜Virtuelle Funktionen in abgeleiteten Klassen überschreiben:🎜rrreee🎜Vererbung 🎜🎜Vererbung ermöglicht einer abgeleiteten Klasse, Daten und Methoden von einer Basisklasse zu erben . 🎜🎜Vererbungssyntax:🎜rrreee🎜Eine abgeleitete Klasse kann auf alle nicht privaten Mitglieder in der Basisklasse zugreifen und diese verwenden, einschließlich virtueller Funktionen. Es kann auch die virtuellen Funktionen der Basisklasse in der abgeleiteten Klasse überschreiben. 🎜🎜Polymorphe Vererbung🎜🎜Polymorphe Vererbung: Wenn eine abgeleitete Klasse von mehreren Basisklassen erbt. 🎜🎜Bei der polymorphen Vererbung können die meisten Objekte der abgeleiteten Klasse auf alle virtuellen Funktionen der Basisklasse zugreifen und diese nutzen. Die Reihenfolge der Aufrufe über mehrere Vererbungshierarchien hinweg hängt von der Deklarationsreihenfolge der Klassen ab. 🎜🎜Praktisches Beispiel:🎜🎜Betrachten Sie den folgenden Code, der die Verwendung der polymorphen Vererbung demonstriert: 🎜rrreee🎜Ausgabe:🎜rrreee🎜In diesem Beispiel 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!

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