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++
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.
class Shape {
public:
virtual double area() = 0;
virtual double perimeter() = 0;
virtual void draw() = 0;
};
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;
};
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();
}
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!