Heim  >  Artikel  >  Backend-Entwicklung  >  Wie wird Vererbung zum Aufbau von Klassenhierarchien in C++ verwendet?

Wie wird Vererbung zum Aufbau von Klassenhierarchien in C++ verwendet?

WBOY
WBOYOriginal
2024-06-04 15:11:09886Durchsuche

C++-Vererbung wird zum Aufbau von Klassenhierarchien verwendet, wobei neue Klassen (abgeleitete Klassen) Funktionalität von einer Basisklasse erben und deren Funktionalität erweitern. Abgeleitete Klassen verwenden Zugriffsspezifizierer, um Vererbungsbeziehungen zu deklarieren und den Zugriff auf Basisklassenmitglieder zu steuern. public gewährt Zugriff auf abgeleitete Klassen und externen Code, protected gewährt Zugriff auf abgeleitete Klassen und deren abgeleitete Klassen und private gewährt nur Zugriff auf abgeleitete Klassen. Durch das Erstellen einer abgeleiteten Klasse und das Überschreiben der rein virtuellen Funktion der Basisklasse kann die abgeleitete Klasse benutzerdefinierte Funktionen implementieren, z. B. die Implementierung von Rechteck und Kreis im Beispiel, um die Fläche einer bestimmten Form zu berechnen.

C++ 中继承如何用于构建类层次结构?

Vererbung in C++: Aufbau einer Klassenhierarchie

Vorwort

Vererbung ist ein Grundkonzept in der objektorientierten Programmierung, das die Erstellung neuer Klassen aus vorhandenen Klassen ermöglicht. In C++ kann Vererbung zum Aufbau einer Klassenhierarchie verwendet werden, in der jede Klasse von ihrer Basisklasse erbt und möglicherweise deren Funktionalität erweitert.

Syntax

Um von einer Basisklasse zu erben, muss die neue Klasse (abgeleitete Klasse) mit public, protected oder private deklariert werden. Code> Zugriffsspezifizierer-Vererbungsbeziehung. Die Syntax lautet wie folgt: <code>publicprotectedprivate 访问说明符声明继承关系。语法如下:

class 派生类 : 访问说明符 基类 {
    // 派生类成员
};
  • 访问说明符控制派生类对基类成员的访问权限:

    • public:允许派生类和外部代码访问基类成员。
    • protected:允许派生类及其派生类访问基类成员。
    • private:只允许派生类访问基类成员。

实战案例

考虑一个描述几何形状的类层次结构:

class Shape {
public:
    virtual double getArea() const = 0; // 纯虚函数
};

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

class Circle : public Shape {
public:
    Circle(double radius) : _radius(radius) {}
    double getArea() const override { return 3.14159 * _radius * _radius; }
private:
    double _radius;
};

示例

在此示例中,Shape 是形状类的基类,它包含一个纯虚函数 getArea(),这意味着必须在所有派生类中实现它。

  • Rectangle 是一个从 Shape 继承的矩形类,它覆盖了 getArea() 函数以计算矩形的面积。
  • Circle 是另一个从 Shape 继承的圆类,它也覆盖了 getArea() 函数以计算圆的面积。

要使用这个类层次结构,我们可以创建 RectangleCircle 对象并调用 getArea()

int main() {
    Rectangle rectangle(2.0, 3.0);
    cout << "Rectangle area: " << rectangle.getArea() << endl;
    Circle circle(5.0);
    cout << "Circle area: " << circle.getArea() << endl;
    return 0;
}

  • Access specifier steuert die Zugriffsrechte abgeleiteter Klassen auf Basisklassenmitglieder:

    • public: Abgeleitete Klassen und Basisklassenmitglieder mit externem Codezugriff sind zulässig.
    • protected: Ermöglicht abgeleiteten Klassen und ihren abgeleiteten Klassen den Zugriff auf Basisklassenmitglieder.
    • private: Nur abgeleitete Klassen dürfen auf Basisklassenmitglieder zugreifen.
Praktisches Beispiel🎜🎜Stellen Sie sich eine Klassenhierarchie vor, die eine geometrische Form beschreibt: 🎜
Rectangle area: 6
Circle area: 78.5398163397
🎜Beispiel🎜🎜In diesem Beispiel ist Form Als Basisklasse der Formklassen enthält sie eine rein virtuelle Funktion getArea(), was bedeutet, dass sie in allen abgeleiteten Klassen implementiert werden muss. 🎜
  • Rectangle ist eine von Shape geerbte Rechteckklasse, die die Funktion getArea() überschreibt, um die Fläche von zu berechnen ​ein Rechteck.
  • Circle ist eine weitere von Shape geerbte Kreisklasse, die auch die Funktion getArea() überschreibt, um die Kreisfläche zu berechnen.
🎜Um diese Klassenhierarchie zu nutzen, können wir Rectangle- und Circle-Objekte erstellen und die Funktion getArea() aufrufen :🎜rrreee🎜Ausgabe:🎜rrreee

Das obige ist der detaillierte Inhalt vonWie wird Vererbung zum Aufbau von Klassenhierarchien in C++ verwendet?. 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