Конструкторите са специални класови функции, които извършват инициализация на всеки обект. Компилаторът извиква конструктора винаги, когато е създаден обект. Конструкторите инициализират стойности на членове на обекта, след като съхранението е разпределено към обекта.

горния случай

Докато, Destructor, от друга страна, се използва за унищожаване на обекта на класа.

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

Докато дефинирате конструктор, трябва да помните, че име на конструктора ще бъде същото като име на класа, и изпълнителите никога няма да имат тип връщане.

Конструкторите могат да бъдат дефинирани или в дефиницията на класа, или извън дефиницията на клас, като се използва име на клас и обхват резолюция: оператор.

Видове конструктори в C++

Конструкторите са от три вида:

  1. Конструктор по подразбиране
  2. Параметризиран конструктор
  3. Копирайте COnstructor

Конструктори по подразбиране

Конструктор по подразбиране е конструкторът, който не приема никакъв аргумент. Той няма параметър.

В този случай веднага след създаването на обекта се извиква конструкторът, който инициализира членовете си с данни.

Конструктор по подразбиране е толкова важен за инициализация на членовете на обекта, че дори ако не дефинираме конструктор изрично, компилаторът ще предостави конструктор по подразбиране имплицитно.

0 или произволна произволна стойност

В този случай ще бъде извикан конструктор по подразбиране, предоставен от компилатора, който ще инициализира членовете на данните на обекта до стойност по подразбиране, която в този случай ще бъде 0 или произволна стойност на цяло число.

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

Това са конструкторите с параметър. С помощта на този конструктор можете да предоставите различни стойности на членовете на данни на различни обекти, като предадете съответните стойности като аргумент.

Използвайки параметризиран конструкор в горния случай, ние инициализираме 3 обекта с дефинирани от потребителя стойности. Можем да имаме произволен брой параметри в конструктор.

Конструктори за копиране

Това са специален тип конструктори, който приема обект като аргумент и се използва за копиране на стойности на членове на данни от един обект в друг обект. По-късно ще проучим подробно конструкторите на копия.

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

Подобно на другите функции на членове, конструкторите също могат да бъдат претоварени. Факт, когато имате дефинирани и параметризирани конструктори във вашия клас, имате претоварени конструктори, един без параметър, а друг с параметър.

Можете да имате произволен брой конструктори в клас, които се различават в списъка с параметри.

В горния случай дефинирахме два конструктора с различни параметри, следователно претоварване на конструкторите.

Още едно важно нещо, ако дефинирате изрично всеки конструктор, тогава компилаторът няма да предостави конструктор по подразбиране и ще трябва да го дефинирате сами.

В горния случай, ако напишем Student S; в главен (), това ще доведе до грешка във времето на компилация, защото не сме дефинирали конструктора по подразбиране и компилаторът няма да предостави конструктора си по подразбиране, защото сме дефинирали други параметризирани конструктори.

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

Destructor е специална функция на класа, която унищожава обекта веднага щом обхватът на обекта приключи. Деструкторът се извиква автоматично от компилатора, когато обектът излезе извън обхвата.

Синтаксисът за деструктор е същият като този за конструктора, името на класа се използва за името на деструктор, с тилда

знак като префикс към него.

Деструкторите никога няма да имат аргументи.

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

По-долу имаме прост клас А с конструктор и деструктор. Ще създадем обект от класа и ще видим кога е извикан конструктор и кога е извикан деструктор.

Конструктор, наречен Конструктор, наречен Destructor, наречен Destructor, наречен

Когато се създава обект, се извиква конструкторът на този клас. Препратката към обекта се унищожава, когато обхватът му приключва, което обикновено е след затварящата къдрава скоба> за кодовия блок, в който е създаден.

Обектът obj2 се унищожава, когато блокът if приключи, защото е създаден вътре в блока if. И обектът obj1 се унищожава, когато функцията main () приключи.

Единична дефиниция както за конструктор по подразбиране, така и за параметризиран

В този пример ще използваме аргумент по подразбиране да има една дефиниция както за defualt, така и за параметризиран конструктор.

Тук, в тази програма, една дефиниция на конструктора ще се погрижи и за двете инициализации на обекти. Нямаме нужда от отделни конструктори по подразбиране и параметризирани.