Ako implementovať kopírujúci konštruktor v C ++?



Pochopenie konštruktérov bolo pre mnohých záhadou. Tento článok vám pomôže demystifikovať koncept Copy Constructor v C ++

Porozumenie Konštruktéri bola pre mnohých záhadou. Tento článok vám pomôže demystifikovať koncept Copy Constructor v C ++. V tomto článku sa budeme zaoberať nasledujúcimi ukazovateľmi,

Začnime tedas týmto článkom o Copy Constructor v C ++





Kopírovací konštruktor je konštruktor, ktorý inicializuje objekt triedy pomocou iného objektu tej istej triedy.

Syntax:



zlúčiť triediť príklad c ++

Kľúčové slovo const máme, pretože chceme, aby bola hodnota konštantná, a uistite sa, že nie je niekde v kóde upravená. Rovnako ako predvolený konštruktor, aj konštruktor kópie poskytuje kompilátor. Toto sa nazýva Default Copy Constructor. Kopírovacie konštruktory je možné nastaviť ako súkromné. Keď urobíme konštruktor kopírovania súkromným, nemôžeme kopírovať objekty triedy.

Tu je príklad kódu :

#include using namespace std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Tu sa volá normálny konštruktor test t2 = t1 // Kopírovací konštruktor sa tu volá cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Výkon:



Konštruktor výstupu a kopírovania v jazyku C ++ - Edureka

Vysvetlenie

Vyššie uvedený program je základnou ukážkou konštruktora kópií. Máme triedny test so súkromným údajovým členom typu int, ktorý sa volá x. Potom máme parametrizovaný konštruktor, ktorý priraďuje 7 premenným x. Máme konštruktor kópií, ktorý vytvára inštanciu hodnoty t2 s hodnotou t1. Zasiela sa adresa t2, ktorá má hodnotu t1 a je priradená k x. Existuje funkcia get, ktorá vracia hodnotu x.

Hlavná funkcia má objekt triedneho testu s názvom t1. S týmto objektom je spojená hodnota, toto je parameter. Hlavná funkcia má ďalší objekt triedneho testu s názvom t2. To sa inicializuje pomocou premennej t1 a tu sa volá konštruktor kopírovania. Nakoniec sa zavolá funkcia get vzhľadom na t1 a t2, aby sa získala hodnota x.

Typy

Existujú dva typy konštruktora kopírovania.
⦁ Konštruktor plytkej kópie
⦁ Konštruktor hlbokej kópie

Pokračujeme týmto článkom o nástroji Copy Constructor v jazyku C ++

pl sql návod pre začiatočníkov s príkladmi

Konštruktor plytkej kópie:

Konštruktor plytkej kópie je predvoleným konštruktorom kopírovania.

Príklad:

Dvaja ľudia pristupujú k databáze súčasne a robia zmeny hodnôt v dvoch rôznych systémoch. Ak vykonajú zmeny v databáze, obidve tieto zmeny sa zobrazia v databáze. Oba objekty budú smerovať na rovnaké miesto v pamäti. Toto je Konštruktor plytkej kópie. Väčšinou sa to stane, keď pracujeme s predvoleným konštruktorom kopírovania. Tu je príklad kódu pre: Konštruktor plytkej kópie:

#include using namespace std class test {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

Výkon:

Vysvetlenie:

Vo vyššie uvedenom kóde používame predvolený konštruktor kópie poskytnutý kompilátorom. Preto je to konštruktér plytkej kópie.

Pokračujeme týmto článkom o nástroji Copy Constructor v jazyku C ++

Konštruktor hlbokej kópie

Deep Copy Constructor je používateľom definovaný konštruktor kopírovania.
Napríklad:
Keď musia dvaja ľudia urobiť prezentáciu a obaja kopírujú z rovnakého zdroja, kópie sú samostatné. Takže keď urobíte úpravy, nebude to mať vplyv iba na druhú kópiu. Toto je Deep Copy Constructor. Oba objekty budú smerovať na rôzne miesta v pamäti a zmeny v jednom nebudú mať na druhý vplyv. Pamäť je dynamicky alokovaná.

just in time kompilátor java

Tu je príklad kódu pre: Deep Copy Constructor:

#include using namespace std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Tu sa volá normálny konštruktor test t2 = t1 // Kopírovací konštruktor sa tu volá cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Výkon:

Vysvetlenie

Jedná sa o rovnaký kód, aký sme použili vyššie, s podobným výstupom. Jedná sa o používateľom definovaný program Copy Constructor, a teda ide o program Deep Copy Constructor.

Dostali sme sa tak na koniec tohto článku týkajúceho sa programu „Copy Constructor in C ++“. Ak sa chcete dozvedieť viac, pozrite si Edureka, dôveryhodná online vzdelávacia spoločnosť. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je navrhnutý tak, aby vás vyškolil na základné aj pokročilé koncepty Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto blogu a my sa vám ozveme čo najskôr.