Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Destructeur — Wikipédia
Destructeur — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.
Page d’aide sur l’homonymie

Pour les articles homonymes, voir destructeur (homonyme).

En programmation orientée objet, le destructeur d'une classe est une méthode spéciale lancée lors de la destruction d'un objet afin de récupérer les ressources (principalement la mémoire vive) réservée dynamiquement lors de l'instanciation de l'objet. Alors qu'il peut exister plusieurs constructeurs, il ne peut exister qu'un seul destructeur.

Utilisation

[modifier | modifier le code]

Les destructeurs permettent d'utiliser le pattern de programmation Resource Acquisition Is Initialization qui facilite l'écriture de code gérant bien les exceptions. Il permet de libérer les ressources utilisées de manière certaine, et aussi d'assurer la fermeture de certaines parties du code.

Les langages qui utilisent des ramasse-miettes n'offrent pas le mécanisme des destructeurs puisque le programmeur ne doit plus gérer la mémoire lui-même. Ainsi Java propose les Finalizer à la place. Il s'agit d'une méthode spéciale, garantie d'être appelée une fois avant que l'objet ne soit récupéré par le ramasse-miettes. En revanche, il n'y a aucune garantie sur le moment où le ramasse-miette va passer.

Dans certains langages, l'allocation de mémoire dynamique se fait à l'aide des pointeurs. Si une classe Route a un tableau de pointeurs sur une classe Voiture pour symboliser les véhicules qui l’empruntent, il faudra détruire les "Voitures" si la classe route est détruite afin de ne pas causer une fuite de mémoire.

Syntaxe

[modifier | modifier le code]
  • C++ : préfixe tilde (~) devant le nom de la classe suivie de "()"[1].
  • D : ~this().
  • Object Pascal : destructor ou Destroy.
  • Objective-C : dealloc.
  • Perl : DESTROY.
  • PHP : __destruct (depuis PHP 5[2]).
  • Python : __del__[3] est appelé "destructeur" en Python 2, mais c'est en fait un finaliseur en Python 3[4].
  • Rust : drop[5].
  • Swift : deinit.

Exemples

[modifier | modifier le code]

En C++

[modifier | modifier le code]

En C++, le destructeur est une fonction membre de la classe portant le même nom que celle-ci précédé d'un tilde. Il est appelé lorsqu'un objet devient hors de portée ou lors de l'utilisation du mot-clé delete.

class Object
{
    public :
        ~Object (); // Destructeur
};

int main ()
{
    Object* p_obj = new Object();
    delete p_obj;   // Destruction de l'objet pointé par p_obj
}                   // Destruction d'obj

Si le concepteur d'une classe ne fournit pas de destructeur, le compilateur C++ implémente un destructeur par défaut qui invoque les destructeurs des classes-mères et des attributs.

Implémenter le destructeur est souvent nécessaire en C++, lorsque des ressources sont allouées sur le tas. Cependant, dès lors que l'on utilise à la place des techniques de resource acquisition is initialization, telles que les pointeurs intelligents de la STL, on pourra souvent s'en passer.

En C#

[modifier | modifier le code]

En C#, le destructeur est appelé grâce au symbole '~' placé avant le nom de la class[6].

public class Test()
{
    //Constructeur
    public Test()
    {
        -- Code
    }
    
    //Destructeur
    ~Test()
    {
        -- Code
    }
}

Références

[modifier | modifier le code]
  1. ↑ (en) Robert W. Sebesta, Concepts of Programming Languages, Boston, MA, USA, Addison-Wesley, 2012, 10th éd., print (ISBN 978-0-13-139531-2, lire en ligne), « "11.4.2.3 Constructors and Destructors" », p. 487
  2. ↑ Constructors and Destructors, from PHP online documentation
  3. ↑ « 3. Data model », sur python.org (consulté le 15 novembre 2023).
  4. ↑ « 3. Data model », sur Python documentation (consulté le 15 novembre 2023).
  5. ↑ (en) « The Rust Reference », sur rust-lang.org (consulté le 15 novembre 2023).
  6. ↑ Object.Finalize Méthode de .NET ; site MSDN de Microsoft ;

Voir aussi

[modifier | modifier le code]
  • Constructeur (programmation)
v · m
Éléments de programmation informatique
Bibliothèque logicielle
  • Bibliothèque standard
  • Espace de noms
  • Framework
  • Gabarit
  • Interface
  • Interface de programmation (API)
Vocabulaire
  • Algorithme
  • Expression
  • Indentation
  • Instruction
  • Ligne de code
  • Opérateur
  • Pseudo-code
  • Ramasse-miettes
Fonctions
  • Dispatch multiple
  • Factorisation
  • Fonction imbriquée
  • Fonction de rappel
  • Fonction d'ordre supérieur
  • Fonction récursive
  • Généricité
  • Opérande
  • Paramètre
  • Polymorphisme
  • Procédure
  • Signature de type
  • Surcharge
Objet
  • Classe
  • Constructeur
  • Destructeur
  • Encapsulation
  • Héritage
  • Héritage multiple
  • Instance
  • Méthode
Événementiel Inversion de contrôle
Code source
Structures de données
  • Arbre
  • Enregistrement
  • Ensemble
  • File
  • Liste
  • Liste chaînée
  • Pile
  • Sémaphore
  • Tableau
  • Tas
  • Type abstrait
  • Vecteur
Déclarations
  • Affectation
  • Convention de nommage
  • Pointeur
  • Portée
  • Référence
  • Tableau associatif
  • Type énuméré
  • Type récursif
  • Typage statique
  • Variable
  • Variable globale
  • Variable locale
Structures de contrôle
  • Case
  • Eval
  • For
  • Goto
  • Switch
  • While
Fonctions usuelles
  • Concaténation
  • Incrémentation
  • malloc
  • printf
Outil de développement
  • Environnement de développement
  • Générateur de documentation
  • Gestion de versions
  • Modèle
  • Patch
  • Spécification
Folklore
  • Hello world
  • Principe KISS
  • Langage de programmation exotique
Catégories :
  • Programmation informatique
  • Développement logiciel
  • icône décorative Portail de l’informatique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Destructeur&oldid=209650847 ».
Catégorie :
  • Programmation orientée objet
Catégories cachées :
  • Portail:Informatique/Articles liés
  • Portail:Technologies/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id