Les destructeurs sont cruciaux dans le polymorphisme C++, garantissant que les objets de classe dérivés nettoient correctement la mémoire lorsqu'ils sont détruits. Le polymorphisme permet à des objets de types différents de répondre au même appel de méthode. Le destructeur est automatiquement appelé lorsqu'un objet est détruit pour libérer sa mémoire. Le destructeur de classe dérivée appelle le destructeur de classe de base pour garantir que la mémoire de la classe de base est libérée.
Le rôle du destructeur dans le polymorphisme en C++
Le destructeur joue un rôle crucial dans le polymorphisme en C++. Il garantit que les objets de classe dérivés sont détruits de la manière appropriée pour nettoyer sa mémoire.
Introduction au polymorphisme
Le polymorphisme est la capacité de permettre à des objets de différents types de répondre au même appel de méthode. En C++, cela se fait via l'héritage et les fonctions virtuelles.
Destructeur
Un destructeur est une fonction membre spéciale associée à une classe qui est automatiquement appelée lorsqu'un objet de cette classe est détruit. Il est responsable de libérer toute mémoire ou ressource allouée par l'objet.
Le rôle du destructeur dans le polymorphisme
Lorsqu'un objet de classe dérivée est créé, la mémoire sera allouée pour stocker les données membres uniques à la classe dérivée. Cependant, lorsque l'objet de classe dérivée est détruit, la mémoire de la classe de base doit également être libérée. Le destructeur garantit cela en appelant le destructeur de la classe de base.
Exemple pratique
Considérons le code suivant :
class Base { public: Base() { std::cout << "Base constructed" << std::endl; } virtual ~Base() { std::cout << "Base destructed" << std::endl; } }; class Derived : public Base { public: Derived() { std::cout << "Derived constructed" << std::endl; } ~Derived() { std::cout << "Derived destructed" << std::endl; } }; int main() { Base* base = new Derived(); delete base; return 0; }
Sortie :
Base constructed Derived constructed Derived destructed Base destructed
Dans cet exemple, la mémoire de la Derived
类派生自 Base
类。当 Derived
对象通过 new
运算符被创建时,Derived
和 Base
构造函数都会被调用。当对象通过 delete
运算符被销毁时,Derived
析构函数会先被调用,释放 Derived
类的内存。然后,Base
析构函数会被调用,释放 Base
classe.
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!