Objets automatiques : Détruits dans l'ordre inverse de la définition, lorsque la portée englobante conclut.
Objets statiques non locaux : Détruits dans l'ordre inverse de la définition, après l'exécution de main (variables globales, données des membres statiques).
Objets statiques locaux : Construits le premier flux de contrôle temporel passe leur définition et détruits dans l'ordre inverse après l'exécution de main (variables statiques au sein des fonctions).
Détruits dans l'ordre inverse de la définition, premiers sous-objets membres, puis les sous-objets de la classe de base.
Détruits par ordre décroissant. Si une exception se produit lors de la construction du n-ième élément, les éléments n-1 à 0 sont détruits en premier.
Construits lorsque les expressions prvalue de type classe sont évaluées. Détruit lorsque l'expression contenant termine son évaluation. Si une exception se produit lors de l'évaluation, les objets temporaires sont correctement détruits.
Objets dynamiques : Alloués avec new Foo et détruits avec delete p .
Tableaux dynamiques : Alloué avec le nouveau Foo[n] et détruit avec delete[] p.
Dans les deux cas, tenter de détruire la mémoire plusieurs fois, y accéder après la destruction ou utiliser des mécanismes de destruction incorrects (par exemple, delete[] pour des objets uniques) entraîne un comportement indéfini. Si une exception se produit pendant la construction, la mémoire allouée dynamiquement est libérée avant que l'exception ne se propage.
std::shared_ptr
Comportement d'exception :
Les destructeurs ne doivent jamais lancer d'exceptions car cela peut mettre fin au programme. Si une exception se produit lors de la destruction d'un objet, elle est propagée et tous les sous-objets précédemment détruits sont correctement détruits. Cependant, si une exception d'un objet dynamique se produit pendant la construction, la mémoire est libérée avant que l'exception ne se propage et le destructeur de l'objet n'est pas appelé.
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!