Mikä on kopiointirakentaja?

Kopiointikonstruktori on C ++: n ja muiden C ++: n vaikutuksen alaisten kielten erityistoiminto, joka kopioi koodausobjektin. Ohjelmoija tekee tämän lisäämällä kopiointikonstruktorin ilmoituksen ja viittaamalla objektiin. Tämä hyödyttää ensisijaisesti ohjelmoijaa säästämällä aikaa, mutta varmistaa myös, että ohjelmoija ei anna objektin koodausta väärin. Kun kopioidaan, sillä on oltava eri muistiosoitin tai se osoittaa samaan osaan, johon alkuperäinen kohde osoittaa. Yksi kopiointirakentajien käytön suurimmista haitoista on, että ne eivät voi toimia itsenäisesti; jos alkuperäinen objekti poistetaan, myös kopio poistetaan.

Kun ohjelmoija käyttää kopiointikonstruktoria, hän käskee koodin kopioimaan koodissa jo luetellun objektin. Tätä varten ohjelmoijan on ensin käytettävä ilmoitusta kertomaan koodaukselle kopiointitoiminnon suorittaminen. Ohjelmoijan on myös viitattava toiseen objektiin, joten objekti on jo rakennettava, tai kopiointia ei voida tehdä.

Kopiointiohjelmiston käytön suurin etu on, että se säästää aikaa. Sen sijaan, että joudut kirjoittamaan uudelleen samat toiminnot ja koodaamaan uudelleen, ohjelmoija voi vain lisätä viitteen ja objekti on valmis. Tällä on toinen piilotettu etu johdonmukaisessa ja tarkassa koodauksessa. Niin kauan kuin alkuperäinen objekti on koodattu oikein, myös kopioidulla objektilla on oikea koodaus. Molemmat edut ovat ilmeisimpiä monimutkaisilla objekteilla, mutta myös ohjelmoijat voivat hyötyä yksinkertaisten objektien kopioimisesta.

C ++ – kielillä monet toiminnot vaativat muistiosoittimen. Tämä kertoo toiminnolle tarkalleen, mistä etsiä muistista tiettyjä tietoja tai mihin se voi tallentaa tietoja. Ohjelmoijan on määritettävä uusi muistiosoitin, kun käytetään kopiointikonstruktoria; muutoin molemmat objektit käyttävät samaa muistitilaa. Pinnalla tämä ei ehkä näytä pahalta, mutta se voi johtaa epäjohdonmukaisuuksiin. Jos esimerkiksi molemmilla objekteilla on sama osoitin ja yhtä kohdetta käytetään lainahakemusten jättämiseen, kun kopioitu kohde on lähetetty luottokorttihakemusten lähettämiseen, kaikki luottokorttihakemukset tallennetaan lainahakemusten mukana.

Ohjelmoijien on oltava varovaisia ​​objektin poistamisesta, koska kopiointikonstruktoriobjektit eivät voi toimia itsenäisesti. Jos ohjelmoija poistaa alkuperäisen objektin, kopioidulla objektilla ei ole mitään viittausta. Jos koodia ei ole viitattu, kopioitu objekti ei pysty suorittamaan tehtäväänsä ja siitä tulee hyödytön.