Le constructeur et le destructeur en C ++

Noter cet article




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, написав соответствующий метод класса и вызвав его, 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 объекта класса нам придется 33 fois pour appeler la méthode, который присваивает значения полям класса. donc, généralement, для инициализации полей класса, а так же для выделения динамической памяти, concepteur utilisé.

Конструктор (par construction - créer) – Il est une méthode de classe spéciale, который выполняется автоматически в момент создания объекта класса. à 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: имя должно быть идентично имени класса; конструктор НЕ имеет типа возвращаемого значения (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: один будет принимать параметры, 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). Он срабатывает тогда, lorsque le programme de travail est terminée et toutes les données sont détruites.

un élément important:

  • Конструктор и деструктор должны быть 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;
  • При определении деструктора перед именем надо добавить символ ~ ;
  • Les concepteurs peuvent être quelque peu, mais leur signature doit être différente (количеством принимаемых параметров, par exemple);
  • Деструктор в классе должен быть определен только один.

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

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

  1. Я так понял я с автором живу в разных часовых поясах, а то у меня еще 09.11.14
    Забавно :)

    1. que – у нас тут в стране восходящего солнца 10-е наступило на 2 дня раньше )) А завтра так вообще 31-е декабря будет!

  2. >> Один объект объявляется сразу во время определения класса – строка 25. При запуске программы конструктор этого объекта сработает даже до входа в главную функцию.

    Совсем не важно сразуво время определенияили потом. Вызывается он раньше, потому что это глобальный объект.

  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.

    Если объект выделяет внутри себя памятьто да, надо писать руками деструктор и освобождать ее.
    Но в вашем случае динамическая память не выделяется, а деструктор таки нужен (он корректно должен уничтожить объект). Но в вашем примере его можно было и не писать вовсеесли деструктора в классе нетто будет создан деструктор по умолчаниюон удалит корректно объект, но память, распределенную динамически естественно не освободит.

    Однако есть в С++ умные указатели и если использовать ихто почти всегда можно полагаться на деструктор по умолчанию )).

    Не затронута куча вопросов по теме статьи, par exemple:
    список инициализации конструктора;
    виртуальный деструктор;
    – constructeur de copie;
    конструкторы по умолчанию;
    исключения в конструкторах и деструкторах;
    т .п.

    Оно все будет описано? )

    1. этот милый смайлик в конце комментария

      Bien sûr, еще будут статьи. Le constructeur de copie – обязательно в отдельной статье рассмотрим. О конструкторах по умолчаниюдобавлю в эту статью.

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>