ホームページ > バックエンド開発 > C++ > C++ でポリモーフィズムと継承機能を実装するにはどうすればよいですか?

C++ でポリモーフィズムと継承機能を実装するにはどうすればよいですか?

WBOY
リリース: 2023-08-27 14:39:22
オリジナル
528 人が閲覧しました

C++ でポリモーフィズムと継承機能を実装するにはどうすればよいですか?

C でポリモーフィズムと継承機能を実装するにはどうすればよいですか?

C では、ポリモーフィズムと継承は、コードの可読性と再利用性を向上させる 2 つの重要な機能です。この記事では、C でポリモーフィズムと継承機能を実装する方法について説明し、コード例を示します。

1. 継承機能

継承はオブジェクト指向プログラミングの基本概念の 1 つで、新しいクラスを作成したり、既存のクラスからプロパティやメソッドを継承したりすることができます。

C では、キーワード「class」を使用してクラスを定義し、「:」演算子による継承を実装します。派生クラスを作成するときは、パブリック継承、プライベート継承、または保護された継承の使用を選択できます。

コード例:

#include <iostream>
using namespace std;

// 基类
class Shape {
public:
    virtual float getArea() = 0; // 纯虚函数
};

// 派生类
class Rectangle : public Shape {
public:
    float width;
    float height;
    
    float getArea() {
        return width * height;
    }
};

int main() {
    Rectangle rect;
    rect.width = 10;
    rect.height = 5;
    
    float area = rect.getArea();
    cout << "矩形的面积:" << area << endl;
    
    return 0;
}
ログイン後にコピー

上記のコードでは、純粋仮想関数 getArea() を定義する基本クラス Shape を作成します。次に、Shape クラスを継承し、getArea() 関数を実装する派生クラス Rectangle を作成しました。 main関数では、Rectangleオブジェクトを作成し、長方形の面積を計算します。

2. ポリモーフィズムの特性

ポリモーフィズムとは、オブジェクトのさまざまな表現を指し、同じ関数が異なるオブジェクトの種類に応じて異なる動作を示すことがあります。 C では、仮想関数とポインタまたは基本クラスへの参照を通じてポリモーフィズムが実現されます。

仮想関数は基本クラスで宣言し、派生クラスでオーバーライドする必要があります。基本クラスのポインターまたは参照が派生クラス オブジェクトを指す場合、派生クラスの関数が呼び出されます。

コード例:

#include <iostream>
using namespace std;

// 基类
class Shape {
public:
    virtual float getArea() = 0; // 纯虚函数
};

// 派生类1
class Rectangle : public Shape {
public:
    float width;
    float height;
    
    float getArea() {
        return width * height;
    }
};

// 派生类2
class Circle : public Shape {
public:
    float radius;
    
    float getArea() {
        return 3.14 * radius * radius;
    }
};

int main() {
    Rectangle rect;
    rect.width = 10;
    rect.height = 5;
    
    Circle circle;
    circle.radius = 4;
    
    Shape* shape1 = &rect; // 基类指针指向派生类对象
    Shape* shape2 = &circle; // 基类指针指向派生类对象
    
    float area1 = shape1->getArea();
    float area2 = shape2->getArea();
    
    cout << "矩形的面积:" << area1 << endl;
    cout << "圆的面积:" << area2 << endl;
    
    return 0;
}
ログイン後にコピー

上記のコードでは、2 つの派生クラス Rectangle と Circle を作成しました。どちらも基本クラス Shape を継承し、getArea() 関数を実装します。 main 関数では、基本クラス ポインターの Shape1 と Shape2 を使用して、それぞれ Rectangle オブジェクトと Circle オブジェクトを指し、それらを通じて getArea() 関数を呼び出してポリモーフィズムを実現します。

概要:

機能を継承することで、C で共通のプロパティとメソッドを持つクラスを作成し、コードの再利用を実現できます。ポリモーフィック機能により、基本クラスのポインターまたは参照の場合、実際のオブジェクトの型に基づいて対応する関数を呼び出すことができます。これにより、コードの柔軟性とスケーラビリティが向上します。

以上がC++ でポリモーフィズムと継承機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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