Maison > développement back-end > C++ > le corps du texte

Comment implémenter le polymorphisme dans la conception de classes C++ ?

WBOY
Libérer: 2024-06-03 19:23:00
original
601 Les gens l'ont consulté

Le polymorphisme permet aux classes dérivées d'avoir des comportements différents tout en partageant la même interface. Les étapes pour y parvenir incluent : la création de classes de base, de classes dérivées, de fonctions virtuelles et l'utilisation de pointeurs de classe de base. L'exemple de code montre comment utiliser la hiérarchie des classes de forme (Shape). , Rectangle, Cercle) pour réaliser le polymorphisme et calculer l'aire totale de différentes formes.

Comment implémenter le polymorphisme dans la conception de classes C++ ?

Conception de classes pour implémenter le polymorphisme en C++

Qu'est-ce que le polymorphisme ?

Le polymorphisme permet aux classes dérivées et aux classes de base d'avoir des comportements différents tout en partageant la même interface. Il fournit un moyen élégant de créer des collections d’objets ayant un comportement similaire mais des implémentations différentes.

Étapes pour implémenter le polymorphisme :

  1. Créer une classe de base : Définir une interface commune que les classes dérivées partageront.
  2. Classes dérivées : Créez des classes dérivées à partir des classes de base pour implémenter des comportements spécifiques.
  3. Fonction virtuelle : Déclarez une fonction virtuelle dans la classe de base et redéfinissez-la dans la classe dérivée. Cela permet aux appels de fonction d'être liés dynamiquement au moment de l'exécution.
  4. Pointeur de classe de base : Utilisez des pointeurs de classe de base ou des références pour contenir des objets de classe dérivés afin d'obtenir le polymorphisme.

Cas pratique :

Considérons une hiérarchie de classes de formes :

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_;
};
Copier après la connexion

Usage :

// 创建不同形状的集合
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;
Copier après la connexion

Sortie :

Total area: 37.68
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!