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
Freigeben: 2024-05-03 13:21:02
Original
1065 Leute haben es durchsucht

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;
};
Nach dem Login kopieren

派生类中的函数继承

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

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

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;
}
Nach dem Login kopieren

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
Nach dem Login kopieren
🎜🎜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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage