C ++ sissejuhatus koopiakonstruktorisse

Programmeerimiskeeled pakuvad meile erinevaid funktsioone, mida saab rakenduse arendamiseks kasutada. Keskmise taseme keelte puhul võib funktsioone olla vähem kui kõrgetasemeliste keelte puhul, kuid mis tahes nende pakutavad võimalused on oluliste rakenduste arendamiseks küllaldased. Selles jaotises õpime tundma koopiaehitajaid. Ehitaja võib määratleda kui erifunktsioon, millel on sama nimi kui klassil, milles on määratletud. Ehitajale helistatakse automaatselt, kui selle klassi objekt initsialiseeritakse. Võiks öelda, et objekti initsialiseerimine, kui klass kutsub kaudselt konstruktori. Kui konstruktor on ülekoormatud, tuleb sel juhul väärtused algväärtustamise ajal koos objektiga üle anda. Ehitaja tüüp, keda õpime, on siin väga ainulaadne ja tuntud kui koopiaehitaja. See konstruktor töötab tavaliste väärtuste asemel muude objektide abil.

Kuidas Copy Constructor C ++-is töötab?

Kopeeri-konstruktorit saab määratleda kui spetsiaalset tüüpi konstruktorit, mida kasutatakse objekti deklareerimiseks ja selle teiste objektide abil lähtestamiseks. Tavaline konstruktor kutsus selle klassi objekti initsialiseerimisel. Kui konstruktor on mitme parameetriga üle koormatud, kui objekti lähtestamine ja sama arvu argumentide edastamine, nimetatakse ülekoormusparameetriks. Kuna koopiakonstruktor on ülekoormatud, võib seda nimetada siis, kui objekt initsialiseeritakse argumendi abil ja argument peab läbima objekti väärtuse, mitte ühegi normaalväärtuse.

Kui ülekoormatud konstruktori parameetriga saadud väärtus on leitud objektist, kutsutakse koopiakonstruktor ja käivitatakse koopiakonstruktoris määratletud avalduste komplekt. Enne koopiakonstruktori kasutamist peame looma sama klassi objekti. See täpsustab selgelt lähenemisviisi, et kõigil programmidel, mis on mõeldud koopiakonstruktori juurutamiseks, peaks olema ka vaikimisi või parameetritega konstruktor, et objekt saaks luua, mis aitab koopiakonstruktori kaasamisel.

Üldist stsenaariumi võib pidada ühe objekti võimendamiseks teise objekti loomiseks. Kõik objektiga seotud väärtused, mida kasutatakse objekti initsialiseerimiseks koopiakonstruktori poolt, eraldatakse äsja initsialiseeritud objektile. See tähendab, et kui mõni objekt kasutab ükskõik millise muutuja väärtust, saab sama muutujat kasutada ka objekt, mille algseadistab koopiakonstruktor. Koopiakonstruktori funktsiooni peetakse väga oluliseks ja see muudab arendamise mõne rakenduse jaoks väga mugavaks. Selle tunnused sama klassi objekti viite kasutamiseks aitavad arendada rakendust, millel on nõue, mida saab täita ainult koopiakonstruktori abil. Ehkki seda ei võimendata nii sageli kui vaikimisi või parameetritega konstruktorit, on see küllaltki võimas, et aidata rakendusel uut funktsionaalsust lisada.

Näide

Mõistame näite abil koopiakonstruktori mõistet. Töötame siin lihtsa näite kallal, mis näitab teile, kuidas koopiakonstruktor töötab ja kuidas ta pääseb juurde väärtustele, mis olid seotud objektiga, mille abil koopiakonstruktor loob uue objekti. Allpool toodud illustratsioon annab teile idee sellest, kuidas on erinev kutsuda koopiakonstruktorit võrreldes tavalise ülekoormatud konstruktori kutsumisega.

Programm

#include
using namespace std;
class Check
(
public:
int val;
Check(int a)
(
val=a;
)
Check(Check &i)
(
val = i.val;
)
);
int main()
(
int add_val;
Check a1(50);
Check a2(a1);
add_val = a2.val + 10;
cout< )
#include
using namespace std;
class Check
(
public:
int val;
Check(int a)
(
val=a;
)
Check(Check &i)
(
val = i.val;
)
);
int main()
(
int add_val;
Check a1(50);
Check a2(a1);
add_val = a2.val + 10;
cout< )

Selles programmis oleme kutsunud parameetriliseks konstruktoriks, möödates argumendi läbi a1. Läbitud väärtus on täisarv, kuna parameetriga konstruktor on määratletud aktsepteerima ainult täisarvu. Kui väärtus 50 edastatakse konstruktorile, on väärtus määratud muutujale var. Siis on objekt a1 koopiakonstruktorile a2 kaudu edasi antud. Kui koopiakonstruktor on objekti viite kätte saanud, seob see uuele objektile esimese objektiga määratud väärtuse. See on lihtne näide koopiakonstruktori mõiste selgitamiseks. Seda saab kasutada mitmetes teistes programmides, et saada rakenduses mitmesuguseid funktsioone.

Väljund:

60

Reeglid ja eeskirjad kopeerimiskonstruktori kohta C ++ -s

Kopeeri konstruktorit peetakse natuke erinevaks vaike- või parameetriga konstruktorist. Ühelt poolt, kus tavaline konstruktor töötab ühise andmetüübi väärtust kasutades, teisalt kopeerib konstruktor sama klassi varem loodud objekti kasutades. Asi, mis tuleb koopiakonstruktori kasutamisel tagada, on see, et koopiakonstrukatori kaudu läbitud parameetreid tuleks kasutada koos ampersandi (&) tähisega, kuna see on erimärk, mida kasutatakse objekti viite hoidmiseks. Kui kopeerimiskonstruktori rakendamisel ampersandit ei kasutata, ei ole see enam koopiakonstruktor, vaid seda peetakse automaatselt parameetriliseks konstruktoriks.

Kopeerimiskonstruktori kutsumiseks peame veenduma, et argumentidena edastatud väärtus peaks kandma objekti viidet, mitte ühtegi väärtust, mis kuulub tavalisse andmetüüpi. Need on vähesed asjad, mida tuleb C ++ programmeerimiskeeles koopiakonstrukatori rakendamisel väga teravalt arvestada. Samuti peame iga kord, kui kasutame koopiakonstruktorit, veenduma, et eristame seda parameetrilisest konstruktorist õigesti, kuna selle puudumine muudab programmi funktsionaalsust täielikult ja põhjustab vale väljundi genereerimise.

Järeldus

Koopiakonstruktorit peetakse eriliseks konstruktoriks, mis töötab sama klassi objekti viite abil. Seda kasutatakse rakenduses mitmete funktsioonide toomiseks. Vaikekonstruktoriga võrreldes ei kasutata koopiakonstruktorit lihtprogrammides kuigi sageli, kuid keerukate rakenduste väljatöötamisel, mida tuleb juurutada tootmiskeskkonnas, kasutatakse seal koopiakonstruktorit ja see teeb ka rakenduste arendamise üsna mugavaks .

Soovitatavad artiklid

See on juhend Kopeeri konstruktorite loendisse C ++. Siin räägime sissejuhatusest ja sellest, kuidas koopiakonstruktor töötab C ++, ning reeglitele ja reeglitele koopiakonstruktorile C ++. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. Kopeeri konstruktor Java-s
  2. Kopeeri konstruktor C # -s
  3. C ++ konstruktor
  4. Konstruktori kasutamine C-s
  5. C # konstruktori tüübid koos koodirakendusega

Kategooria: