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

Comment utiliser le polymorphisme pour gérer les différences entre différents objets en C++ ?

WBOY
Libérer: 2024-06-05 11:50:21
original
576 Les gens l'ont consulté

Le polymorphisme est une fonctionnalité de programmation orientée objet qui permet aux objets de se comporter différemment au moment de l'exécution, même s'ils ont la même classe parent. En C++, le polymorphisme est obtenu grâce aux fonctions virtuelles et à l'héritage : Définissez une classe de base et une classe dérivée : la classe de base contient des fonctions virtuelles, et la classe dérivée hérite de la classe de base et remplace les fonctions virtuelles. Utiliser des pointeurs ou des références : enregistrez l'adresse de l'objet de classe de base via un pointeur ou une référence et accédez aux objets de différentes classes dérivées au moment de l'exécution. Appel via une fonction virtuelle : l’appel d’une fonction virtuelle dans la classe de base appellera la fonction de classe dérivée remplacée au moment de l’exécution. Cas pratique : Dans la hiérarchie des classes de formes, les classes Circle et Rectangle héritent de la classe Shape et remplacent les fonctions virtuelles Area(), Perimeter() et Draw(), permettant à ces formes d'être utilisées dans des applications pratiques du polymorphisme en C++

C++ 中如何使用多态性处理不同对象的差异?

Qu'est-ce que le polymorphisme ?

Le polymorphisme est une fonctionnalité des langages de programmation orientés objet qui permet aux objets de se comporter différemment au moment de l'exécution, même s'ils ont la même classe parent. En C++, le polymorphisme est obtenu grâce aux fonctions virtuelles et à l'héritage.

Comment utiliser le polymorphisme ?

Définir les classes de base et dérivées : Définissez une classe de base qui contient des fonctions virtuelles. Les classes dérivées héritent de la classe de base et remplacent les fonctions virtuelles pour fournir différentes implémentations.

    Utiliser un pointeur ou une référence :
  1. Enregistrez l'adresse de l'objet de classe de base via un pointeur ou une référence. Cela permet d'accéder aux objets de différentes classes dérivées au moment de l'exécution.
  2. Appel via une fonction virtuelle :
  3. Appelez une fonction virtuelle dans la classe de base et elle appellera la fonction de classe dérivée remplacée au moment de l'exécution, en fonction du type d'objet réel.
  4. Cas pratique : Hiérarchie des classes de forme
Classe de base Shape

class Shape {
public:
  virtual double area() = 0;
  virtual double perimeter() = 0;
  virtual void draw() = 0;
};
Copier après la connexion

Classes dérivées Cercle et Rectangle

class Circle : public Shape {
public:
  ...  // 构造函数和数据成员
  virtual double area() override;
  virtual double perimeter() override;
  virtual void draw() override;
};

class Rectangle : public Shape {
public:
  ...  // 构造函数和数据成员
  virtual double area() override;
  virtual double perimeter() override;
  virtual void draw() override;
};
Copier après la connexion

Utiliser le polymorphisme pour calculer l'aire et le périmètre

vector<Shape*> shapes;
shapes.push_back(new Circle(...));
shapes.push_back(new Rectangle(...));

for (auto& shape : shapes) {
  cout << "面积: " << shape->area() << endl;
  cout << "周长: " << shape->perimeter() << endl;
  shape->draw();
}
Copier après la connexion

Advant âges :

Simplifiez le code et gardez la classe de base et la classe dérivée découplées.

Améliorez l'évolutivité et la maintenabilité du code.

Permet la gestion dynamique de différents objets au moment de l'exécution.

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