C++ 継承はクラス階層を構築するために使用され、新しいクラス (派生クラス) が基本クラスから機能を継承し、その機能を拡張します。派生クラスはアクセス指定子を使用して継承関係を宣言し、基本クラスのメンバーへのアクセスを制御します。 public は派生クラスと外部コードへのアクセスを許可し、protected は派生クラスとその派生クラスへのアクセスを許可し、private は派生クラスのみへのアクセスを許可します。派生クラスを作成し、基本クラスの純粋仮想関数をオーバーライドすることで、派生クラスは、特定の形状の面積を計算する例の Rectangle と Circle の実装などのカスタム関数を実装できます。
継承は、既存のクラスから新しいクラスを作成できるようにするオブジェクト指向プログラミングの基本概念です。 C++ では、継承を使用して、各クラスが基本クラスから継承し、場合によってはその機能を拡張するクラス階層を構築できます。
基本クラスから継承するには、public
、protected
、または private を使用して新しいクラス (派生クラス) を宣言する必要があります。 code> アクセス指定子の継承関係。構文は次のとおりです: <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 >: 派生クラスと外部コードは基本クラスのメンバーにアクセスできます。 </li><li><code>protected
: 派生クラスとその派生クラスが基本クラスのメンバーにアクセスできるようにします。 private
: 派生クラスのみが基本クラスのメンバーにアクセスできます。 Rectangle area: 6 Circle area: 78.5398163397
Shape
はシェイプ クラスの基本クラスには、純粋な仮想関数 getArea()
が含まれています。これは、すべての派生クラスで実装する必要があることを意味します。 🎜Rectangle
は Shape
から継承された長方形クラスであり、 getArea()
関数をオーバーライドして、 の面積を計算します。長方形。 Circle
は、Shape
から継承された別の円クラスで、円の面積を計算する getArea()
関数もオーバーライドします。 Rectangle
オブジェクトと Circle
オブジェクトを作成し、getArea()
関数を呼び出します。 :🎜rrreee🎜出力:🎜rrreee以上がC++ でクラス階層を構築するために継承はどのように使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。