Разлика између конструктора и деструктора

Аутор: Laura McKinney
Датум Стварања: 1 Април 2021
Ажурирати Датум: 14 Може 2024
Anonim
Разлика између конструктора и деструктора - Технологија
Разлика између конструктора и деструктора - Технологија

Садржај


Конструктор и деструктор су функције члана с истим именом као и њихова класа. Бивши тип конструктор помаже у иницијализацији објекта. Супротно томе, а деструктор разликује се од конструктора који брише креирани конструктор када нема никакве користи.

Понекад је потребно иницијализирати неки део објекта пре него што се он може користити. На пример, радимо на снопу, пре него што извршимо било коју радњу, врх снопа увек мора бити постављен на нулу. Ова карактеристика аутоматске иницијализације врши се путем 'Цонструцтор'. Као, ако објект треба извршити неки код прије него што буде уништен. На пример, ако објекту треба да затвори датотеку коју је отворио, пре уништења. Може се извести уз помоћ „Деструктора“.

Погледајмо неке од основних разлика између конструктора и деструктора помоћу упоредне табеле

  1. Упоредни графикон
  2. Дефиниција
  3. Кључне разлике
  4. Закључак

Упоредни графикон:

Основе за поређењеКонструкторДеструктор
Сврха

Објекту распоређује меморију.Оно размешта меморију објекта.
Изјава цласс_наме (аргументи ако постоје) {};~ цласс_наме (без аргумената) {};
Аргументи Конструктор прихвата аргумент Деструктор не прихвата ниједан аргумент.
ЗовеКонструктор се позива аутоматски, док се објект креира.Деструктор се позива аутоматски, пошто се блок зауставља или се програм прекида.
РадКонструктор дозвољава објекту да иницијализира неку своју вредност пре, и користи се.Деструктор омогућава објекту да изврши неки код у тренутку његовог уништења.
Ред за извршење

Конструктори се позивају редоследом.
Деструктор се зове обратним редоследом конструктора.
У бројевима У разреду може бити више конструктора.У класи увек постоји један деструктор.
Цопи Цонструцтор Конструктор копирања омогућава конструктору да декларира и иницијализира објект из другог објекта.Нема таквог концепта.
Овер лоад Конструктори се могу преоптеретити.Деструктор се не може преоптеретити.


Дефиниција Конструктора:

А конструктор у основи је чланска функција класе, која иницијализира објект и додељује му меморију. Конструктори се могу лако препознати јер су декларисани и дефинисани истим именом као и класа. Конструктор нема повратни тип; тако да не враћају ништа, чак ни „неважеће“. Конструктор је увек дефинисан у јавном делу класе.

У разреду може бити више конструктора; оне се могу разликовати на основу броја и врсте аргумената који се дају. Ако у разреду постоји више конструктора; имплицитни конструктор (конструктор који не ради ништа) мора бити дефинисан заједно са њима; то не ради ништа друго, задовољава преводилац.

Конструктори се могу дефинисати и са заданим аргументима. Док, они такође „објект динамички“ иницијализирају. Конструктори се не могу наследити, нити могу бити виртуелни, али могу бити преоптерећени. Не могу бити упућени на њихову адресу.

Врсте конструктора

У основи постоје три врсте конструктора - Дефаулт, Параметеризед и Цопи Цонструцторс.


  • Дефаулт Цонструцтор: То је конструктор где конструктор не даје никакве аргументе. Дефаулт конструктор нема параметар, али вредности заданог конструктора могу се задати (динамички).
  • Параметеризовани конструктор: Ова врста конструктора узима аргументе; можемо пренијети различите вредности члановима података као аргументима.
  • Цопи Цонструцтор: Конструктор копирања разликује се од осталих врста конструктора јер прихвата адресу другог објекта као аргумент.

Имплементација конструктора:

класа Цонст {инт а, б; публиц: Цонст () // конструктор без параметра {а = 0; б = 0; } Цонст (инт ц, инт д) {// конструктор са параметром а = ц; ц = д; }}; инт маин () {Цонст Ц1; Ц2 (10,20); // ова се изјава позива на конструктора}

Кад се створи Ц1 конструктор који нема ниједан параметар се извршава, јер Ц1 не пролази ниједан параметар. Док се, када се створи Ц2, конструктор са параметром извршава, јер конструктору преноси два цела броја.

Дефиниција Деструктора:

А Деструктор је такође чланска функција класе, која распоређује меморију додељену неком објекту. Дефинисана је истим називом као и класа, а претходи јој а тилде (~) симбол. Деструктори се увек позивају у обрнутом редоследу конструктора.

У класи увек постоји један деструктор јер не прихвата ниједну аргументацију. Локални објекти се уништавају чим контрола извршења остави блок; с друге стране, глобални објекти се уништавају када се целокупни програм прекине. Компилатор имплицитно назива деструктора. Ако су класе наслеђене, а класа је изведена из родитељске класе, и дечија и родитељска класа имају деструкторе; затим се прво зове деструктор изведене класе, а затим деструктор родитељске класе.

Имплементација Деструктора:

класа Цонст {инт а, б; публиц: Цонст (инт ц, инт д) // конструктор са параметром. {а = ц; ц = д; цоут << "вредности а и б су" <<>

Када се створи Ц1 објект, позива се конструктор са два параметра целог броја и члан „а, б“ се иницијализира и вредности „а, б“ се уређују. Након тога деструктор се позива и "објект Ц1 се уништава".

Потреба Деструктора

Израда конструктора троши одређену количину меморијског простора, јер на крају распоређује меморију објектима. Ова додељена меморија мора бити размештена пре уништавања објеката како би се ослободили ресурси за друге задатке. Деструктори су изузетно корисни за предвиђену сврху, јер ефикасно уништавају предмете и обављају задатке чишћења ради ослобађања меморије.

  1. Примарна сврха конструктора је доделити меморију објектима када су створени. Насупрот томе, главна сврха деструктора је да распореди меморију објекта када је уништен.
  2. Конструктору је дозвољено да прихвати аргументе јер се аргументи могу користити за иницијализацију чланова података класе. Са друге стране, деструктор не прихвата никакве аргументе јер је његов једини посао размештање меморије објекта.
  3. Конструктор се позива када се створи објект. Супротно томе, деструктор се позива када се програм прекине или програм изађе из блока у којем је предмет креиран.
  4. Конструктор се обично користи за иницијализацију чланова података класе, док се деструктор користи како би објекат извео неку радњу пре него што се уништи.
  5. Конструктори се изводе узастопним редоследом, што значи да ако постоји изведена класа која насљеђује основну класу и ствара се изведена класа, тада ће прво назвати конструктор основне класе, а затим конструктор изведене класе. Супротно томе, деструктор изведене класе назива се прво, а затим основна класа, то значи да се деструктор извршава обрнутим редоследом конструктора.
  6. У класи може бити вишеструких конструктора који се идентификују бројем пренесених аргумената док може имати само један деструктор.
  7. Постоји концепт конструктора копирања који омогућава да се објект иницијализира из другог објекта док деструктор нема такав концепт.
  8. Конструктори се могу преоптеретити да би извршили различите акције под именом истог конструктора. Напротив, деструктори се не могу преоптеретити.

Закључак:

Осим што су сличност да су конструктор и деструктор посебна функција класе и да имају исти назив, суштинска разлика између њих обоје је: „конструктор“ се назива у време додељивања меморије и „деструктор“ се позива на време размештања меморије објеката. Компилатор имплицитно назива и конструктор и деструктор иако нису дефинисани у класи.