Maison  >  Article  >  développement back-end  >  Comment implémenter les fonctionnalités de polymorphisme et d’héritage en C++ ?

Comment implémenter les fonctionnalités de polymorphisme et d’héritage en C++ ?

WBOY
WBOYoriginal
2023-08-27 14:39:22510parcourir

Comment implémenter les fonctionnalités de polymorphisme et d’héritage en C++ ?

Comment implémenter les fonctionnalités de polymorphisme et d'héritage en C++ ?

En C++, le polymorphisme et l'héritage sont deux fonctionnalités importantes qui peuvent améliorer la lisibilité et la réutilisabilité du code. Cet article explique comment implémenter les fonctionnalités de polymorphisme et d'héritage en C++ et fournit des exemples de code.

1. Fonctionnalités d'héritage

L'héritage est l'un des concepts de base de la programmation orientée objet. Il nous permet de créer de nouvelles classes et d'hériter des propriétés et des méthodes des classes existantes.

En C++, utilisez le mot-clé "class" pour définir une classe et implémenter l'héritage via l'opérateur ":". Lors de la création d'une classe dérivée, vous pouvez choisir d'utiliser l'héritage public, l'héritage privé ou l'héritage protégé.

Exemple de code :

#include <iostream>
using namespace std;

// 基类
class Shape {
public:
    virtual float getArea() = 0; // 纯虚函数
};

// 派生类
class Rectangle : public Shape {
public:
    float width;
    float height;
    
    float getArea() {
        return width * height;
    }
};

int main() {
    Rectangle rect;
    rect.width = 10;
    rect.height = 5;
    
    float area = rect.getArea();
    cout << "矩形的面积:" << area << endl;
    
    return 0;
}

Dans le code ci-dessus, nous créons une classe de base Shape, qui définit une fonction virtuelle pure getArea(). Ensuite, nous avons créé une classe dérivée Rectangle, qui hérite de la classe Shape et implémente la fonction getArea(). Dans la fonction principale, nous créons un objet Rectangle et calculons l'aire du rectangle.

2. Caractéristiques du polymorphisme

Le polymorphisme fait référence aux différentes manifestations d'objets. La même fonction peut montrer des comportements différents selon les types d'objets différents. En C++, le polymorphisme est obtenu grâce à des fonctions virtuelles et des pointeurs ou références aux classes de base.

Les fonctions virtuelles doivent être déclarées dans la classe de base et remplacées dans la classe dérivée. Lorsqu’un pointeur ou une référence de classe de base pointe vers un objet de classe dérivée, la fonction de la classe dérivée est appelée.

Exemple de code :

#include <iostream>
using namespace std;

// 基类
class Shape {
public:
    virtual float getArea() = 0; // 纯虚函数
};

// 派生类1
class Rectangle : public Shape {
public:
    float width;
    float height;
    
    float getArea() {
        return width * height;
    }
};

// 派生类2
class Circle : public Shape {
public:
    float radius;
    
    float getArea() {
        return 3.14 * radius * radius;
    }
};

int main() {
    Rectangle rect;
    rect.width = 10;
    rect.height = 5;
    
    Circle circle;
    circle.radius = 4;
    
    Shape* shape1 = &rect; // 基类指针指向派生类对象
    Shape* shape2 = &circle; // 基类指针指向派生类对象
    
    float area1 = shape1->getArea();
    float area2 = shape2->getArea();
    
    cout << "矩形的面积:" << area1 << endl;
    cout << "圆的面积:" << area2 << endl;
    
    return 0;
}

Dans le code ci-dessus, nous avons créé deux classes dérivées, Rectangle et Circle, qui héritent toutes deux de la classe de base Shape et implémentent la fonction getArea(). Dans la fonction principale, nous utilisons les pointeurs de classe de base shape1 et shape2 pour pointer respectivement vers les objets Rectangle et Circle, et appelons la fonction getArea() à travers eux pour obtenir le polymorphisme.

Résumé :

Grâce aux fonctionnalités d'héritage, nous pouvons créer des classes avec des propriétés et des méthodes communes en C++ et réaliser la réutilisation du code. Grâce au polymorphisme, nous pouvons appeler la fonction correspondante en fonction du type de l'objet réel dans le cas d'un pointeur ou d'une référence de classe de base. Cela améliore la flexibilité et l’évolutivité du code.

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