Pagkakaiba sa pagitan ng Konstruktor at Destructor

May -Akda: Laura McKinney
Petsa Ng Paglikha: 1 Abril 2021
I -Update Ang Petsa: 8 Mayo 2024
Anonim
Штукатурка санузла от А до Я.  Все этапы.  Угол 90 градусов.
Video.: Штукатурка санузла от А до Я. Все этапы. Угол 90 градусов.

Nilalaman


Ang konstruktor at tagapagwasak ay ang mga kasapi ay gumana ng parehong pangalan ng kanilang klase. Ang dating uri tagabuo tumutulong sa pagsisimula ng isang bagay. Sa kabaligtaran, a maninira ay naiiba sa konstruktor na nagtatanggal sa nilikha na tagabuo kung ito ay walang gamit.

Minsan kinakailangan na simulan ang ilang bahagi ng isang bagay bago ito magamit. Halimbawa, nagpapatakbo kami sa salansan, bago namin isagawa ang anumang pagkilos, ang tuktok ng salansan ay dapat palaging itakda sa zero. Ang tampok na ito ng awtomatikong pagsisimula ay isinasagawa sa pamamagitan ng 'Constructor'. Tulad ng, kung ang isang bagay ay kailangang magpatupad ng ilang code bago ito masira. Halimbawa, kung ang isang bagay ay kailangang isara ang isang file na binuksan nito, bago ang pagkasira nito. Maaari itong maisagawa sa tulong ng 'Destructor'.

Pangkalahatang-ideya ng ilan sa mga pangunahing pagkakaiba sa pagitan ng tagabuo at pagkawasak sa tulong ng isang tsart sa paghahambing


  1. Tsart ng paghahambing
  2. Kahulugan
  3. Pangunahing Pagkakaiba
  4. Konklusyon

Tsart ng paghahambing:

Batayan para sa paghahambingTagagawaMapanganib
Layunin

Inilalaan nito ang memorya sa isang bagay.Tinatanggal nito ang memorya ng isang bagay.
Deklarasyon class_name (argumento kung mayroon man) {};~ class_name (walang mga argumento) {};
Mga Pangangatwiran Tumatanggap ng argumento ang konstruktor Hindi tinatanggap ng Destructor ang anumang argumento.
PagtawagAng konstruktor ay awtomatikong tinawag, habang ang bagay ay nilikha.Ang Destructor ay awtomatikong tinawag, dahil ang block ay lumabas o magwawakas ang programa.
NagtatrabahoPinapayagan ng Konstruktor ang isang bagay upang masimulan ang ilan sa halaga nito, ginagamit ito.Pinapayagan ng Destructor ang isang bagay na magsagawa ng ilang code sa oras ng pagkasira nito.
Order ng pagpatay

Ang konstruktor ay tinatawag na sunud-sunod na pagkakasunud-sunod.
Ang Destructor ay tinawag sa reverse order ng konstruksyon.
Sa mga numero Maaaring magkaroon ng maraming mga konstruksyon sa isang klase.Laging isang nagwawasak sa klase.
Kopya ng Tagabuo Pinapayagan ng tagabuo ng kopya ang isang tagabuo upang magpahayag at magsimula ng isang bagay mula sa ibang bagay.Walang ganoong konsepto.
Sa paglo-load Ang mga konstruksyon ay maaaring ma-overload.Hindi ma-overload ang Destructor.


Kahulugan ng Constructor:

A tagabuo talaga ay isang function ng miyembro ng klase, na inisyal ang bagay at naglalaan ng memorya dito. Ang mga konstruksyon ay madaling matukoy habang sila ay idineklara at tinukoy na may parehong pangalan tulad ng sa klase. Ang isang tagabuo ay walang anumang uri ng pagbabalik; kaya, hindi sila nagbabalik ng anupaman, kahit na 'walang bisa'. Ang isang konstruktor ay palaging tinukoy sa pampublikong seksyon ng isang klase.

Maaaring magkaroon ng maraming mga konstruksyon sa isang klase; maaari silang makilala batay sa bilang at uri ng mga argumento na naipasa. Kung mayroong maraming mga tagabuo sa isang klase; ang implicit konstruktor (walang gumagawa ng konstruksyon) ay dapat na tinukoy kasama nila; wala itong ginawa kundi, nasiyahan ang tagatala.

Ang mga konstruksyon ay maaari ring matukoy sa mga default na argumento. Sapagkat, sinisimulan din nila ang bagay na "pabago-bago". Ang mga konstruksyon ay hindi maaaring magmana, at hindi ito maaaring maging virtual ngunit, maaari silang ma-overload. Hindi sila ma-refer sa kanilang address.

Mga Uri ng Constructors

Mayroong karaniwang tatlong uri ng konstruktor- Default, Parameterized, at Copy Constructors.

  • Default na Tagabuo: Ito ay isang tagabuo kung saan walang pagtatalo na ibinigay sa tagapagtayo. Ang default na tagabuo ay walang parameter, ngunit ang mga halaga sa default na tagabuo ay maaaring maipasa sa pamamagitan ng default (pabago-bago).
  • Parameterized Constructor: Ang ganitong uri ng konstruksyon ay kumukuha ng mga argumento; maaari naming ipasa ang iba't ibang mga halaga sa mga miyembro ng data bilang mga argumento.
  • Kopya ng Tagabuo: Ang tagapagtayo ng kopya ay naiiba sa iba pang mga uri ng konstruksyon dahil tinatanggap nito ang address ng iba pang bagay bilang isang argumento.

Pagpapatupad ng tagabuo:

klase Const {int a, b; pampubliko: Const () // tagapagbuo na walang parameter {a = 0; b = 0; } Const (int c, int d) {// tagabuo na may parameter a = c; c = d; }; int main () {Const C1; C2 (10,20); // ang pahayag na ito ay humihimok sa tagabuo}

Kapag ang C1 ay nilikha ng isang tagabuo na walang parameter na naisakatuparan, dahil ang C1 ay hindi pumasa sa anumang parameter. Sapagkat, kapag ang C2 ay nilikha ng isang tagabuo na may parameter ay naisakatuparan, dahil pinapasa nito ang dalawang integer sa tagapagtayo.

Kahulugan ng Destructor:

A Mapanganib ay din ng isang function ng miyembro ng isang klase, na deallocates ang memorya na inilalaan sa isang bagay. Ito ay tinukoy na may parehong pangalan bilang ng isang klase, na pinauna ng isang tilde (~) simbolo. Ang mga maninira ay palaging tinawag sa reverse order ng mga konstruksyon.

Laging isang nagwawasak sa isang klase, dahil hindi ito tumatanggap ng anumang mga argumento. Ang mga lokal na bagay ay nawasak sa sandaling ang kontrol ng pagpapatupad ay nag-iwan ng bloke; sa kabilang banda, ang mga pandaigdigang bagay ay nawasak kapag natapos ang buong programa. Ang isang mapanirang ay tahasang tinawag ng isang tagatala. Kung ang mga klase ay minana, at ang isang klase ay nagmula sa isang klase ng magulang, at ang parehong klase ng bata at isang klase ng magulang ay may mga mapangwasak; kung gayon, ang mapangwasak ng nagmula na klase ay tinatawag na una, na sinundan ng tagasira ng klase ng magulang.

Pagpapatupad ng Destructor:

klase Const {int a, b; pampubliko: Const (int c, int d) // tagabuo ng parameter. {a = c; c = d; cout << "halaga ng a at b ay" <<>

Kapag nilikha ang bagay na C1, ang isang tagapagtayo na may dalawang mga parameter ng uri ng integer ay hinihimok at ang miyembro na "a, b" ay nauna nang ma-nauna at ang halaga ng "a, b" ay na-ed. Matapos ang mapangwasak na ito ay mapupuksa at ang "object C1 ay masisira".

Kailangan ng Destructor

Ang paglikha ng tagabuo ay kumonsumo ng ilang halaga ng puwang ng memorya, dahil sa huli ito ay naglalaan ng memorya sa mga bagay. Ang inilalaan na memorya ay dapat na muling mapalitan bago sirain ang mga bagay upang malaya ang mga mapagkukunan para sa iba pang mga gawain. Ang mga maninira ay lubos na kapaki-pakinabang para sa inilaan na layunin, na epektibong sinisira ang mga bagay at isinasagawa ang mga gawain sa paglilinis para sa pagpapakawala ng memorya.

  1. Ang pangunahing layunin ng isang tagabuo ay ang maglaan ng memorya sa mga bagay kapag nilikha ang mga ito. Tulad ng laban, ang pangunahing layunin ng isang maninira ay ang pagpapahinto ng memorya ng bagay kapag nawasak ito.
  2. Ang isang tagabuo ay pinahihintulutan na tanggapin ang mga argumento dahil ang mga argumento ay maaaring magamit upang masimulan ang mga miyembro ng data ng klase. Sa kabilang banda, ang isang maninira ay hindi tumatanggap ng anumang mga argumento dahil ang tanging gawain lamang nito ay upang i-deallocate ang memorya ng bagay.
  3. Tinawag ang isang tagapagtayo kapag nilikha ang isang bagay. Sa kaibahan, ang isang mapang-akit ay tinatawag kapag ang isang programa ay natapos o lumabas ang programa sa bloke kung saan nilikha ang isang bagay.
  4. Ang isang tagabuo ay karaniwang ginagamit upang masimulan ang mga miyembro ng data ng klase, samantalang ang isang maninira ay ginagamit upang hayaan ang bagay na magsagawa ng ilang aksyon bago ito masira.
  5. Ang mga konstruksyon ay isinasagawa sa sunud-sunod na pagkakasunud-sunod na nangangahulugang kung mayroong isang nagmula na klase na nagmamana sa base na klase at ang object ng nagmula na klase ay nilikha pagkatapos ay tatawagin muna ang tagapagtayo ng base ng klase at pagkatapos ay ang tagapagtayo ng nagmula sa klase. Sa kabaligtaran, ang maninira ng nagmula sa klase ay tinatawag na una at pagkatapos ay ang batayang klase ay nangangahulugan na ang isang maninira ay isinasagawa sa reverse order ng tagapagbuo.
  6. Sa klase, maaaring magkaroon ng maramihang mga konstruksyon na nakikilala sa pamamagitan ng bilang ng mga argumento na naipasa samantalang maaari itong magkaroon ng isang maninira lamang.
  7. Mayroong isang konsepto ng tagabuo ng kopya na nagpapahintulot sa isang bagay na makakuha ng paunang simula sa ibang bagay samantalang ang maninira ay walang ganoong konsepto.
  8. Ang mga konstruksyon ay maaaring mag-overload upang magsagawa ng iba't ibang pagkilos sa ilalim ng pangalan ng parehong tagabuo. Sa kabilang banda, ang mga mapanirang-puri ay hindi ma-overload.

Konklusyon:

Bukod sa pagkakapareho, ang tagapagtayo at manggagawa ay ang espesyal na miyembro ng pagpapaandar ng isang klase at nagtataglay ng parehong pangalan, ang mahalagang pagkakaiba sa kanilang dalawa ay, ang 'tagabuo' ay tinawag sa oras ng paglalaan ng memorya at 'destruktor' ay tinawag sa oras ng mga object deallocation ng memorya. Ang parehong tagapagbuo at maninira ay tahasang tinawag ng tagatala kahit na hindi sila tinukoy sa klase.