Erinevus konstruktori ja hävitaja vahel

Klass on objektorienteeritud programmeerimise (OOP) keskmes. See on nagu objektide loomise plaan, mis pakub liikmemuutujate ja liikmefunktsioonide algväärtusi. See on OOP põhielement, mis määratleb tulevase objekti olemuse. Kõige olulisem asi klassi juures on see, et see määratleb uue andmetüübi ja kui see on määratletud, saab seda kasutada seda tüüpi objektide loomiseks. Seega piisab, kui öelda, et klass on objekti mall ja objekt on tegelikult klassi näide. Seda kasutatakse uute objektide loomiseks ja haldamiseks ning pärimise toetamiseks, mis on üks objektorienteeritud programmeerimiskeelte, näiteks Java, tuumkontseptsioonidest. Lühidalt, klass korraldab teavet andmetüübi kohta, et elemente taaskasutada selle andmetüübi mitme esinemisjuhu tegemisel. Klassis määratletud andmeid või muutujaid nimetatakse esinemismuutujateks.

Mis on konstruktor?

Ehitaja on klassi eriliikme funktsioon, mida kutsutakse objekti eksemplari loomisel. Aeg-ajalt võib olla keeruline kõigi klassi muutujaid lähtestada, iga kord, kui eksemplar luuakse. Kuna initsialiseerimisnõue on objektorienteeritud programmeerimisel tavaline, võimaldab see objektidel loomise ajal automaatselt initsialiseerida. See automaatne lähtestamine toimub konstruktori abil. Spetsiaalseks nimetatakse seda seetõttu, et eksemplari meetodil on tavaliselt klassiga sama nimi. See lähtestab objekti kohe pärast loomist ja seda saab kasutada objekti liikmete väärtuste määramiseks. Ehitaja sarnaneb süntaktiliselt objektipõhises programmeerimises kasutatava meetodiga ja meetod on protseduur, mis on seotud klassiga ja kuulub selle klassi mis tahes objekti. Lühidalt, konstruktorit kutsutakse iga kord, kui klassi objekt luuakse. Ehitajate juures on kõige olulisem see, et neil pole tagasivoolutüüpi, isegi tühiseid.

Mis on hävitaja?

Hävitaja on täiesti erinev mõiste; see on eriline meetod, mida kutsutakse siis, kui klassi eksemplari mälust kustutatakse. Hävitaja kutsutakse automaatselt siis, kui objekti enam ei vajata või see hakkab kaduma või vabastatakse selgesõnaliselt. Hävitaja peamine eesmärk on vabaneda ressurssidest, mida objekt oma elutsükli jooksul kasutas. See annab objektile viimase võimaluse vabastada talle eraldatud mälu, nii et hunnikus oleks piisavalt ruumi uute objektide salvestamiseks, et programme tõhusalt käivitada. Hävitajaid kasutatakse sageli koos konstruktoritega, välja arvatud need, mis on mõeldud konstruktorite abil loodud objektide hävitamiseks. Idee on kustutada objektid nende kustutamisel, et vabastada uute objektide jaoks mälu. Nagu konstruktorid, on ka destruktorid klassi määratluses määratletud alamprogrammidena ja neil on sama nimi kui klassi nimega, välja arvatud see, et destruktoril on eesliide ~ (tilde) operaator. Destruktoreid nimetatakse C ++ -s selgesõnaliselt, Java-s aga hävitajaid pole.

Erinevus konstruktori ja hävitaja vahel

Ehitaja ja hävitaja eesmärk

Nii konstruktorid kui ka destruktorid on iga klassi spetsiaalsed liikmefunktsioonid, kuid neil on erinevad kontseptsioonid. Klassi eksemplari initsialiseerimiseks kasutatakse konstruktorit, mis tähendab, et sellele kutsutakse iga kord, kui klass ilmub, samas kui destruktor on vastupidine konstruktorile, mida nimetatakse konstruktorite vastupidises järjekorras.

Mälu eraldamine

Ehitajaks kutsutakse iga kord, kui luuakse uus klassi eksemplar. Põhimõtteliselt on see klassi liikme funktsioon, mis lähtestab objekti kohe pärast loomist ja eraldab sellele mälu. Teisest küljest kutsutakse hävitajat siis, kui mälu kustutatakse klassi eksemplar, mis omakorda initsialiseerib objektid, mis loodi konstruktorite abil uute objektide mälu vabastamiseks.

Nimi

Nii konstruktorid kui ka destruktorid on klassi nimega samanimelise klassi spetsiaalsed liikmefunktsioonid, välja arvatud see, et hävitaja ees on ~ (tilde) operaator. Ehitaja pole midagi muud kui meetod, millel pole tagasivõtutüüpi ega isegi tühist, samas kui destruktorid on täpselt vastupidised konstruktoritele.

Ülekoormamine

Nii konstruktorid kui ka destruktorid kutsutakse pärast loomist ja kustutamist automaatselt. Kuid erinevalt konstruktoritest ei saa destruktoreid üle koormata. Ülekoormamine on objektorienteeritud programmeerimise kontseptsioon, mis võimaldab teil määratleda kaks või enam sama nimega funktsiooni, et saaksite neile helistada erinevate argumentide loenditega.

Argumendid

Objektorienteeritud programmeerimisel aktsepteerivad konstruktorid sageli argumente, mida nad kasutavad vajalike liikmesmuutujate seadmiseks, samas kui destruktorid ei aktsepteeri ühtegi argumenti.

Ehitaja ja hävitaja töö

Ehitajad võimaldavad objektil enne väärtuse kasutamist mõne selle väärtuse lähtestada, seevastu hävitajad võimaldavad objektil hävitaval ajal käivitada mingi osa koodist.

 Ehitaja värsside hävitaja: võrdlusdiagramm

Kokkuvõte konstruktorist Vs. Hävitaja

Nii konstruktorid kui ka destruktorid on klassi nimega samanimelise klassi spetsiaalsed liikmefunktsioonid, välja arvatud see, et destruktoritele eelneb ~ tilde operaator. Ehitaja ei ole midagi muud kui meetod, välja arvatud juhul, kui seda nimetatakse objekti esinemisjuhu loomisel, samas kui hävitaja on täpselt vastupidine konstruktoritele, mida nimetatakse siis, kui objekti eksemplar kustutatakse mälust. Destruktorite eesmärk on destrukteerida objektid, mis on loodud konstruktorite abil, et vabastada mäluruumi uute objektide mahutamiseks.