ホームページ  >  記事  >  バックエンド開発  >  C++ クラス設計でポリモーフィズムを実装するにはどうすればよいですか?

C++ クラス設計でポリモーフィズムを実装するにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-06-03 19:23:00579ブラウズ

ポリモーフィズムにより、同じインターフェイスを共有しながら派生クラスが異なる動作を行うことができます。これを実現する手順には、基本クラス、派生クラス、仮想関数の作成、および基本クラス ポインターの使用が含まれます。サンプル コードでは、シェイプ クラス階層 (Shape. 、長方形、円)を使用して多態性を実現し、さまざまな形状の合計面積を計算します。

C++ クラス設計でポリモーフィズムを実装するにはどうすればよいですか?

C++でポリモーフィズムを実装するためのクラス設計

ポリモーフィズムとは何ですか?

ポリモーフィズムにより、同じインターフェイスを共有しながら、派生クラスと基本クラスが異なる動作を持つことができます。これは、動作は似ているが実装が異なるオブジェクトのコレクションを作成するエレガントな方法を提供します。

ポリモーフィズムを実装する手順:

  1. 基本クラスを作成します: 派生クラスが共有する共通インターフェイスを定義します。
  2. 派生クラス: 基本クラスから派生クラスを作成して、特定の動作を実装します。
  3. 仮想関数: 基本クラスで仮想関数を宣言し、派生クラスで再定義します。これにより、関数呼び出しを実行時に動的にバインドできるようになります。
  4. 基本クラス ポインター: 基本クラス ポインターまたは参照を使用して派生クラス オブジェクトを保持し、ポリモーフィズムを実現します。

実際のケース:

形状クラスの階層を考える:

class Shape {
public:
    virtual double area() = 0; // 纯虚函数(必须在派生类中重新定义)
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width_(width), height_(height) {}
    double area() override { return width_ * height_; }
private:
    double width_;
    double height_;
};

class Circle : public Shape {
public:
    Circle(double radius) : radius_(radius) {}
    double area() override { return 3.14 * radius_ * radius_; }
private:
    double radius_;
};

使用法:

// 创建不同形状的集合
vector<Shape*> shapes;
shapes.push_back(new Rectangle(2.0, 3.0));
shapes.push_back(new Circle(4.0));

// 使用基类指针计算总面积
double totalArea = 0.0;
for (Shape* shape : shapes) {
    totalArea += shape->area(); // 使用多态性动态绑定函数调用
}

// 输出总面积
cout << "Total area: " << totalArea << endl;

出力:

Total area: 37.68

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。