Maison  >  Article  >  développement back-end  >  Explication détaillée des fonctions membres C++ : programmation générique et modélisation de méthodes objet

Explication détaillée des fonctions membres C++ : programmation générique et modélisation de méthodes objet

PHPz
PHPzoriginal
2024-04-29 14:51:02887parcourir

Les fonctions membres C++ sont des fonctions définies dans une classe qui peuvent accéder aux données membres et aux variables de la classe. La programmation générique et les modèles rendent le code réutilisable et indépendant des types de données. La programmation générique permet d'écrire du code qui fonctionne avec différents types de données, tandis que les modèles permettent de créer des classes qui fonctionnent avec des fonctions membres de différents types. Pour les programmes qui doivent calculer l'aire de différentes formes, vous pouvez créer une classe AreaCalculator à l'aide de fonctions membres basées sur un modèle et fournir des sous-classes qui implémentent la fonction membre calculateArea pour chaque type de forme, tel que Rectangle et Cercle. Cette classe facilite le calcul de l'aire de différentes formes.

C++ 成员函数详解:对象方法的泛型编程与模板化

Explication détaillée des fonctions membres C++ : programmation générique et modèles de méthodes objet

En C++, les fonctions membres sont des fonctions définies à l'intérieur d'une classe et peuvent accéder aux données membres et aux variables membres de la classe. La programmation générique et les modèles sont des techniques puissantes en C++ qui vous permettent d'écrire du code réutilisable et indépendant des types de données.

Programmation générique

Le code générique vous permet d'écrire des fonctions pouvant être utilisées sur différents types de données. Cela élimine le besoin d’écrire des fonctions distinctes pour chaque type de données.

template<typename T>
T max(T a, T b) {
  return a > b ? a : b;
}

La fonction max peut être utilisée avec n'importe quel type de données T. 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

🎜 Templating 🎜🎜🎜 Les modèles vous permettent de créer des classes qui peuvent être utilisées avec différents types de fonctions membres. En utilisant des modèles, vous évitez d’écrire du code en double pour chaque fonction membre. 🎜
AreaCalculator<Rectangle> rectangleCalculator;
double rectangleArea = rectangleCalculator.area(Rectangle{3.0, 4.0});

AreaCalculator<Circle> circleCalculator;
double circleArea = circleCalculator.area(Circle{2.0});
🎜Cette classe Vector peut stocker tout type de valeur. 🎜🎜🎜Cas pratique🎜🎜🎜Supposons que vous souhaitiez créer un programme qui calcule l'aire de différentes formes. Vous pouvez utiliser des fonctions membres basées sur un modèle pour créer des classes AreaCalculator qui peuvent être utilisées pour différents types de forme. 🎜rrreee🎜Pour chaque type de forme, vous devez fournir une sous-classe Shape qui implémente la fonction membre calculateArea. 🎜rrreee🎜Vous pouvez maintenant calculer l'aire de n'importe quelle forme à l'aide de AreaCalculator : 🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn