C Конструктори та деструктори вивчаються сьогодні ввечері

Конструктори - це спеціальні функції класу, які виконують ініціалізацію кожного об'єкта. Компілятор викликає конструктор щоразу, коли створюється об'єкт. Конструктори ініціалізують значення для членів об’єкта після виділення об’єкту сховища.

сьогодні

Тоді як Destructor, з іншого боку, використовується для знищення об’єкта класу.

Почнемо спочатку з конструкторів, далі синтаксис визначення функції конструктора в класі:

Визначаючи конструктор, ви повинні пам'ятати, що ім'я конструктора буде таким же, як і назва класу, а підрядники ніколи не матимуть типу повернення.

Конструктори можуть бути визначені як усередині визначення класу, так і поза визначенням класу, використовуючи ім'я класу та область роздільної здатності: operator.

Типи конструкторів в C++

Конструктори бувають трьох типів:

  1. Конструктор за замовчуванням
  2. Параметризований конструктор
  3. Скопіюйте COnstructor

Конструктори за замовчуванням

Конструктор за замовчуванням - це конструктор, який не приймає жодного аргументу. Він не має параметра.

У цьому випадку, як тільки об'єкт створюється, викликається конструктор, який ініціалізує його члени даних.

Конструктор за замовчуванням настільки важливий для ініціалізації членів об'єкта, що навіть якщо ми не визначаємо конструктор явно, компілятор надасть конструктор за замовчуванням неявно.

0 або будь-яке випадкове значення

У цьому випадку буде викликаний конструктор за замовчуванням, наданий компілятором, який ініціалізує члени даних об’єкта до значення за замовчуванням, яке в цьому випадку буде 0 або будь-яким випадковим цілим числом.

Параметризовані конструктори

Це конструктори з параметром. За допомогою цього конструктора ви можете надавати різні значення членам даних різних об'єктів, передаючи відповідні значення як аргумент.

Використовуючи параметризований конструкор у наведеному вище випадку, ми ініціалізували 3 об’єкти із визначеними користувачем значеннями. Ми можемо мати будь-яку кількість параметрів у конструкторі.

Конструктори копіювання

Це спеціальний тип конструкторів, який приймає об’єкт як аргумент і використовується для копіювання значень членів даних одного об’єкта в інший об’єкт. Пізніше ми детально вивчимо конструктори копій.

Перевантаження конструктора в C++

Як і інші функції-члени, конструктори також можуть бути перевантажені. Факт, коли у вас у класі визначені конструктори за замовчуванням та параметризовані, у вас є перевантажені конструктори, один без параметра, а інший із параметром.

Ви можете мати будь-яку кількість конструкторів у класі, які відрізняються списком параметрів.

У наведеному вище випадку ми визначили два конструктори з різними параметрами, отже, перевантаження конструкторів.

Ще одна важлива річ, якщо ви визначите будь-який конструктор явно, тоді компілятор не надасть конструктор за замовчуванням, і вам доведеться його визначати самостійно.

У наведеному вище випадку, якщо ми пишемо Student S; в основний (), це призведе до помилки часу компіляції, оскільки ми не визначили конструктор за замовчуванням, а компілятор не надасть конструктор за замовчуванням, оскільки ми визначили інші параметризовані конструктори.

Деструктори в C++

Деструктор - це спеціальна функція класу, яка знищує об'єкт, як тільки обсяг об'єкта закінчується. Деструктор автоматично викликається компілятором, коли об'єкт виходить за межі області дії.

Синтаксис для деструктора такий самий, як для конструктора, ім'я класу використовується для імені деструктора, з тильда

знак як префікс до нього.

Деструктори ніколи не матимуть аргументів.

Приклад, щоб побачити, як називаються конструктор і деструктор

Нижче ми маємо простий клас A з конструктором та деструктором. Ми створимо об'єкт класу і побачимо, коли викликається конструктор, а коли викликається деструктор.

Конструктор під назвою Конструктор під назвою Destructor під назвою Destructor називається

Коли створюється об'єкт, викликається конструктор цього класу. Посилання на об'єкт знищується, коли закінчується область дії, як правило, після закриваючої фігурної дужки> для кодового блоку, в якому він створений.

Об'єкт obj2 руйнується, коли блок if закінчується, оскільки він був створений всередині блоку if. І об’єкт obj1 руйнується, коли закінчується функція main ().

Єдине визначення як для конструктора за замовчуванням, так і для параметрів

У цьому прикладі ми будемо використовувати аргумент за замовчуванням мати єдине визначення як для defualt, так і для параметризованого конструктора.

Тут, у цій програмі, одне визначення конструктора подбає про обидві ці ініціалізації об’єктів. Нам не потрібні окремі конструктори за замовчуванням та параметризовані.