Le constructeur et le destructeur en C ++




c ++ constructeur de classe, c ++ destructor de classe, constructeur et classe destructor c ++
Vous avez peut-être remarqué, que la définition classe, nous ne pouvons pas initialiser ses champs (membres) dans la définition. Vous pouvez attribuer une valeur pour eux, écrit la méthode appropriée de la classe et appelant sa, après la création de l'objet en dehors de la classe. Un tel procédé ne convient pas, depuis l'annonce, disons, 33 installation de classe, nous avons 33 fois pour appeler la méthode, qui attribue les champs de classe. donc, généralement, pour initialiser les champs de classe, ainsi que d'isoler le tas, concepteur utilisé.

concepteur (par construction - créer) – Il est une méthode de classe spéciale, qui fonctionne automatiquement lorsque vous créez un objet de classe. à savoir, Si nous prescrivons, quelles valeurs il est nécessaire d'initialiser les champs dans la classe de l'annonce de l'objet, il fonctionne sans “invitation spéciale”. Il est inutile de provoquer spécifiquement, en tant que méthode de classe normale.

exemple:

lignes 11 – 17 nous définissons un constructeur: nom doit être identique au nom de la classe; Designer n'a pas un type de retour (y compris vide). Un objet est déclaré une fois au cours de la définition de la classe – rangée 25. Lorsque le programme démarre, constructeur de cet objet ne fonctionnera même avant l'entrée de la fonction principale. Ceci peut être vu dans la capture d'écran suivante:

c ++ constructeur de classe, c ++ destructor de classe, constructeur et classe destructor c ++

programme n'a pas encore atteint avant la ligne 29 setlocale(LC_ALL, "rus"); , et le constructeur déjà “rapporté”, qui a travaillé (Cyrillique a été affiché de manière incorrecte). En ligne 30 – regarder, qui contient la catégorie du champ. La deuxième fois, le concepteur travaillera en ligne 32, lors de la création de l'objet obj2.

destructor (de destruction – détruire) – en tant que méthode de classe spéciale, qui fonctionne dans la destruction de la classe d'objet. Dans la plupart des cas, il est le rôle, à la mémoire dynamique libre, qui sont alloués pour le constructeur de l'objet. son nom, en tant que concepteur, doit correspondre au nom de la classe. Juste avant que le nom du symbole doit être ajouté ~

Ajout au code destructor précédent. Et créer deux constructeurs de la classe: on recevra les paramètres, deuxième – aucun.

Le destructor est défini dans les lignes 34 – 37. Pour plus de simplicité, il affiche simplement la chaîne en place du programme, où le travail. rangée 43 – Nous déclarons l'objet de classe et de transmettre les données à écrire dans le domaine. Ici, le concepteur travaillera avec les paramètres. En ligne 46 – déclenché un constructeur par défaut.

c ++ constructeur de classe, c ++ destructor de classe, constructeur et classe destructor c ++

visible, que le destructor se chargera automatiquement deux fois (parce que la classe d'objet de programme avait deux). puis il tire, lorsque le programme de travail est terminée et toutes les données sont détruites.

un élément important:

  • Le constructeur et destructor devraient être public;
  • Le constructeur et le destructeur ne disposent pas d'un type de retour;
  • classe noms, constructeur et destructeur doit correspondre;
  • Le constructeur accepte les paramètres. Destructor ne prend aucun paramètre;
  • Lors de la définition d'un destructor avant le nom du symbole doit être ajouté ~ ;
  • Les concepteurs peuvent être quelque peu, mais leur signature doit être différente (nombre de paramètres reçus, par exemple);
  • Destructeur de la classe doit être définie une seule.

Pour soutenir notre site – cliquez sur la tirelire et choisir un moyen pratique.

Bulletin de nouvelles leçons sur la programmation:

PureCodeCpp – Les bases de la programmation en C ++ pour les débutants

Le constructeur et le destructeur en C ++
4.2 (84%) 10 votes

9 réflexions sur "Le constructeur et le destructeur en C ++

  1. Je comprends que je suis l'auteur en direct dans différents fuseaux horaires, et j'ai une autre 09.11.14
    amusement :)

  2. >> Un objet est déclaré une fois au cours de la définition de la classe - ligne 25. Lorsque vous exécutez le programme le concepteur de cet objet fonctionne même avant l'entrée de la fonction principale.

    Peu importe droite “lors de la détermination” ou plus tard. Appelé avant, car il est un objet global.

  3. >> Dans la plupart des cas, il est le rôle, à la mémoire dynamique libre, qui sont alloués pour le constructeur de l'objet.

    Si l'objet est généré dans une mémoire – que, Je dois écrire une main destructor et relâchez.
    Mais dans votre cas, la mémoire dynamique n'est pas affecté, mais encore besoin d'un destructor (il doit détruire correctement l'objet). Mais dans votre exemple, il ne pouvait pas écrire du tout – Si aucun destructor dans la classe – il va créer un destructeur par défaut – il supprime l'objet correct, mais la mémoire, distribués dynamiquement libère naturellement.

    Cependant, il y a en C ++ pointeurs intelligents, et quand les utiliser – il est presque toujours possible de compter sur le destructeur par défaut )).

    Est pas affectée par beaucoup de questions sur le sujet de l'article, par exemple:
    – liste d'initialisation du constructeur;
    – destructor virtuelle;
    – constructeur de copie;
    – constructeurs par défaut;
    – exceptions dans les constructeurs et destructeurs;
    – t .p.

    Tout sera expliqué? )

    1. Ce joli visage souriant à la fin d'un commentaire…

      Bien sûr, plus d'articles seront. Le constructeur de copie – assurez-vous d'envisager un article distinct. A propos du constructeur par défaut – Ajouté à cet article.

  4. setlocale(LC_ALL, “rus”);
    quelque chose dans l'exemple des travaux de codage constructeur russe, et dans l'exemple destructor – aucun. =:(

Laisser un commentaire

Votre adresse email ne sera pas publiée. les champs requis sont indiqués *