Maison  >  Article  >  développement back-end  >  Comment déclarer et appeler des fonctions virtuelles en C++ ?

Comment déclarer et appeler des fonctions virtuelles en C++ ?

WBOY
WBOYoriginal
2024-04-12 16:03:021153parcourir

La fonction virtuelle est un mécanisme de polymorphisme qui permet à une classe dérivée de remplacer la fonction membre de sa classe de base : Déclaration : Ajoutez le mot-clé virtual avant le nom de la fonction. Appel : à l’aide d’un pointeur ou d’une référence de classe de base, le compilateur se liera dynamiquement à l’implémentation appropriée de la classe dérivée. Cas pratique : En définissant la classe de base Shape et ses classes dérivées Rectangle et Circle, l'application de fonctions virtuelles en polymorphisme est démontrée pour calculer des aires et dessiner des formes.

C++ 中如何声明和调用虚函数?

Fonctions virtuelles en C++

Les fonctions virtuelles sont un mécanisme de polymorphisme qui permet à une classe dérivée de remplacer les fonctions membres de sa classe de base. Cela permet aux programmeurs de définir un comportement commun dans une classe de base tout en permettant aux classes dérivées de fournir leur implémentation spécifique à l'instance de ce comportement.

Déclarer une fonction virtuelle

Pour déclarer une fonction virtuelle, placez le mot-clé virtual au début du nom de la fonction. Par exemple :

class Base {
public:
    virtual void print() const;
};

Appelez une fonction virtuelle

Appelez une fonction virtuelle, en utilisant un pointeur ou une référence de classe de base. Le compilateur se liera dynamiquement à l'implémentation appropriée de la classe dérivée. Par exemple :

void doSomething(Base* base) {
    base->print();
}

Cas pratique

Voici un exemple d'utilisation de fonctions virtuelles :

#include <iostream>

class Shape {
public:
    virtual double area() const = 0;
    virtual void draw() const = 0;
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width_(width), height_(height) {}
    
    double area() const override { return width_ * height_; }
    void draw() const override { std::cout << "Drawing rectangle" << std::endl; }
    
private:
    double width_;
    double height_;
};

class Circle : public Shape {
public:
    Circle(double radius) : radius_(radius) {}
    
    double area() const override { return 3.14 * radius_ * radius_; }
    void draw() const override { std::cout << "Drawing circle" << std::endl; }
    
private:
    double radius_;
};

int main() {
    Shape* rectangle = new Rectangle(5, 10);
    Shape* circle = new Circle(5);
    
    std::cout << rectangle->area() << std::endl; // Output: 50
    std::cout << circle->area() << std::endl;   // Output: 78.5
    
    rectangle->draw();   // Output: Drawing rectangle
    circle->draw();     // Output: Drawing circle
    
    return 0;
}

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