ホームページ > バックエンド開発 > C++ > C++ でクラス階層を構築するために継承はどのように使用されますか?

C++ でクラス階層を構築するために継承はどのように使用されますか?

WBOY
リリース: 2024-06-04 15:11:09
オリジナル
952 人が閲覧しました

C++ 継承はクラス階層を構築するために使用され、新しいクラス (派生クラス) が基本クラスから機能を継承し、その機能を拡張します。派生クラスはアクセス指定子を使用して継承関係を宣言し、基本クラスのメンバーへのアクセスを制御します。 public は派生クラスと外部コードへのアクセスを許可し、protected は派生クラスとその派生クラスへのアクセスを許可し、private は派生クラスのみへのアクセスを許可します。派生クラスを作成し、基本クラスの純粋仮想関数をオーバーライドすることで、派生クラスは、特定の形状の面積を計算する例の Rectangle と Circle の実装などのカスタム関数を実装できます。

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

C++ の継承: クラス階層の構築

はじめに

継承は、既存のクラスから新しいクラスを作成できるようにするオブジェクト指向プログラミングの基本概念です。 C++ では、継承を使用して、各クラスが基本クラスから継承し、場合によってはその機能を拡張するクラス階層を構築できます。

構文

基本クラスから継承するには、publicprotected、または private を使用して新しいクラス (派生クラス) を宣言する必要があります。 code> アクセス指定子の継承関係。構文は次のとおりです: <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;
}
ログイン後にコピー
  • アクセス指定子は、基本クラスのメンバーに対する派生クラスのアクセス権を制御します:

    • public</code >: 派生クラスと外部コードは基本クラスのメンバーにアクセスできます。 </li><li><code>protected: 派生クラスとその派生クラスが基本クラスのメンバーにアクセスできるようにします。
    • private: 派生クラスのみが基本クラスのメンバーにアクセスできます。

実践例🎜🎜 幾何学的な形状を記述するクラス階層を考えてみましょう: 🎜
Rectangle area: 6
Circle area: 78.5398163397
ログイン後にコピー
🎜例🎜🎜 この例では、Shape はシェイプ クラスの基本クラスには、純粋な仮想関数 getArea() が含まれています。これは、すべての派生クラスで実装する必要があることを意味します。 🎜
  • RectangleShape から継承された長方形クラスであり、 getArea() 関数をオーバーライドして、 の面積を計算します。長方形。
  • Circle は、Shape から継承された別の円クラスで、円の面積を計算する getArea() 関数もオーバーライドします。
🎜このクラス階層を使用するには、Rectangle オブジェクトと Circle オブジェクトを作成し、getArea() 関数を呼び出します。 :🎜rrreee🎜出力:🎜rrreee

以上がC++ でクラス階層を構築するために継承はどのように使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート