C メンバー関数はクラス内で定義された関数であり、クラスのデータ メンバーおよび変数にアクセスできます。汎用プログラミングとテンプレートにより、コードが再利用可能になり、データ型に依存しなくなります。ジェネリック プログラミングを使用すると、さまざまなデータ型を処理するコードを作成できます。一方、テンプレートを使用すると、さまざまな型のメンバー関数を処理するクラスを作成できます。さまざまな形状の面積を計算する必要があるプログラムの場合、テンプレート化されたメンバー関数を使用して AreaCalculator クラスを作成し、Rectangle や Circle などの形状タイプごとに CalculateArea メンバー関数を実装するサブクラスを提供できます。このクラスを使用すると、さまざまな形状の面積を簡単に計算できます。
C メンバー関数の詳細な説明: オブジェクト メソッドのジェネリック プログラミングとテンプレート
C では、メンバー関数は関数で定義されます。クラス内のユーザーは、クラスのデータ メンバーとメンバー変数にアクセスできます。汎用プログラミングとテンプレートは、再利用可能でデータ型に依存しないコードを作成するための C の強力なテクニックです。
汎用プログラミング
汎用コードを使用すると、さまざまなデータ型を処理する関数を作成できます。これにより、データ型ごとに個別の関数を作成する必要がなくなります。
template<typename T> T max(T a, T b) { return a > b ? a : b; }
max
関数は、任意のデータ型 T
で使用できます。
テンプレート化
テンプレート化を使用すると、さまざまな種類のメンバー関数で使用できるクラスを作成できます。テンプレートを使用すると、各メンバー関数に重複したコードを記述することがなくなります。
template<typename T> class Vector { public: Vector() : x(0), y(0), z(0) {} Vector(T x, T y, T z) : x(x), y(y), z(z) {} T x, y, z; };
この Vector
クラスは、あらゆる種類の値を格納できます。
実践例
さまざまな形状の面積を計算するプログラムを作成するとします。テンプレート化されたメンバー関数を使用して、さまざまな形状タイプに使用できる AreaCalculator
クラスを作成できます。
template<typename Shape> class AreaCalculator { public: double area(const Shape& shape) { // 根据形状类型计算面积 return shape.calculateArea(); } };
各形状タイプに対して、calculateArea
メンバー関数を実装する Shape
サブクラスを提供する必要があります。
class Rectangle { public: double width, height; double calculateArea() { return width * height; } }; class Circle { public: double radius; double calculateArea() { return PI * radius * radius; } };
AreaCalculator
:
AreaCalculator<Rectangle> rectangleCalculator; double rectangleArea = rectangleCalculator.area(Rectangle{3.0, 4.0}); AreaCalculator<Circle> circleCalculator; double circleArea = circleCalculator.area(Circle{2.0});
以上がC++ メンバー関数の詳細な説明: ジェネリック プログラミングとオブジェクト メソッドのテンプレート化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。