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.
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.
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>public
、protected
或 private
访问说明符声明继承关系。语法如下:
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()
函数以计算圆的面积。要使用这个类层次结构,我们可以创建 Rectangle
和 Circle
对象并调用 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; }
public</code >: Abgeleitete Klassen und Basisklassenmitglieder mit externem Codezugriff sind zulässig. </li><li><code>protected
: Ermöglicht abgeleiteten Klassen und ihren abgeleiteten Klassen den Zugriff auf Basisklassenmitglieder. private
: Nur abgeleitete Klassen dürfen auf Basisklassenmitglieder zugreifen. Rectangle area: 6 Circle area: 78.5398163397
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. Rectangle
- und Circle
-Objekte erstellen und die Funktion getArea()
aufrufen :🎜rrreee🎜Ausgabe:🎜rrreeeDas 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!