Heim >Backend-Entwicklung >C++ >Detaillierte Erläuterung der C++-Funktionsvererbung: Wie definiere und verwende ich abstrakte Basisklassen?

Detaillierte Erläuterung der C++-Funktionsvererbung: Wie definiere und verwende ich abstrakte Basisklassen?

WBOY
WBOYOriginal
2024-05-03 13:21:021065Durchsuche

Funktionsvererbung ermöglicht abgeleiteten Klassen die Wiederverwendung der Funktionsdefinitionen der Basisklasse, was durch die folgenden Schritte erreicht wird: Definieren Sie eine abstrakte Basisklasse, einschließlich rein virtueller Funktionen. Verwenden Sie das Schlüsselwort override in der abgeleiteten Klasse, um die Funktionen der Basisklasse zu erben und zu implementieren. Praktischer Fall: Erstellen Sie eine abstrakte Basisklasse „Shape“ und leiten Sie die Klassen „Circle“ und „Rectangle“ ab, um die Flächen verschiedener Formen zu berechnen.

C++ 函数继承详解:如何定义和使用抽象基类?

Detaillierte Erklärung der C++-Funktionsvererbung: Definieren und Verwenden abstrakter Basisklassen

Was ist Funktionsvererbung?

Funktionsvererbung ist eine C++-Funktion, die es abgeleiteten Klassen ermöglicht, die Funktionsdefinitionen einer Basisklasse zu erben und so die Funktionen der Basisklasse in Unterklassen wiederzuverwenden.

Abstrakte Basisklasse definieren

Eine abstrakte Basisklasse ist eine Basisklasse, die nicht zur Instanziierung gedacht ist, sondern nur als Basisklasse für andere Klassen dient. Es enthält rein virtuelle Funktionen (also Funktionen ohne Funktionskörper), die in abgeleiteten Klassen überschrieben werden müssen. Um eine abstrakte Basisklasse zu deklarieren, können Sie virtual und = 0 verwenden, zum Beispiel: virtual= 0,例如:

class Shape {
public:
    virtual double area() const = 0;
};

派生类中的函数继承

派生类可以继承抽象基类的函数定义,方法是使用 override

class Circle : public Shape {
public:
    override double area() const {
        return M_PI * radius * radius;
    }
private:
    double radius;
};

Funktionsvererbung in abgeleiteten Klassen

Abgeleitete Klassen können abstrakte Basis erben Klassenfunktionsdefinition durch Verwendung des Schlüsselworts override und Bereitstellung einer Implementierung der Funktion. Zum Beispiel:

#include <iostream>
#include <cmath>

using namespace std;

class Shape {
public:
    virtual double area() const = 0;
};

class Circle : public Shape {
public:
    Circle(double radius) : radius(radius) {}
    override double area() const {
        return M_PI * radius * radius;
    }
private:
    double radius;
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width(width), height(height) {}
    override double area() const {
        return width * height;
    }
private:
    double width;
    double height;
};

int main() {
    Circle circle(5);
    cout << "Circle area: " << circle.area() << endl;

    Rectangle rectangle(3, 4);
    cout << "Rectangle area: " << rectangle.area() << endl;

    return 0;
}

Praxisfall: Formflächenberechnung

Nehmen wir die Berechnung der Formfläche als Beispiel für eine praktische Demonstration. Wir erstellen eine abstrakte Basisklasse „Form“ und erstellen abgeleitete Klassen „Kreis“ und „Rechteck“, um die Fläche von Kreisen und Rechtecken zu berechnen: 🎜
Circle area: 78.5398
Rectangle area: 12
🎜🎜Ausgabe ausführen: 🎜🎜rrreee

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der C++-Funktionsvererbung: Wie definiere und verwende ich abstrakte Basisklassen?. 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