Hogyan lehet megvalósítani a másoláskonstruktort C ++ verzióban?



A kivitelezők megértése sokak számára rejtély volt. Ez a cikk segít elmagyarázni a Copy Constructor C ++ nyelven fogalmát

Megértés Kivitelezők sokak számára rejtély volt. Ez a cikk segít elmagyarázni a Copy Constructor C ++ nyelven fogalmát. A következő hivatkozásokkal foglalkozunk ebben a cikkben,

Kezdjük tehátezzel a cikkel a Copy Constructor programról a C ++ nyelven





A Copy Constructor egy olyan konstruktor, amely inicializálja egy osztály objektumát ugyanazon osztály másik objektumának felhasználásával.

Szintaxis:



Azért van a const kulcsszó, mert állandóvá akarjuk tenni az értéket, és ellenőrizni kell, hogy az nem módosul-e valahol a kódban. Az alapértelmezett konstruktorhoz hasonlóan a fordító egy másolat-konstruktort is biztosít. Ezt hívják Alapértelmezett másolatkészítőnek. A másolatkészítők priváttá tehetők. Nem másolhatjuk az osztály objektumait, amikor a másolat készítőjét priváttá tesszük.

Itt van egy példa kód :

#include névtér használatával std osztály teszt {private: int x public: test (int x1) {x = x1} test (const teszt & t2) {x = t2.x} int getX () {return x}} int main () {teszt t1 (7) // A normál konstruktort itt hívjuk meg: teszt t2 = t1 // A másoló konstruktort itt hívjuk cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Kimenet:



hogyan állítsuk be az osztályútvonalat a Windows rendszerben

Kimenet-másolás készítő C ++ nyelven - Edureka

Magyarázat

A fenti program a copy constructor alapvető bemutatója. Van egy osztálytesztünk, az int típusú privát adattaggal, amelyet x-nek hívunk. Ezután van egy paraméterezett konstruktorunk, amely 7-et rendel az x változókhoz. Van egy másolókészítőnk, amely a t2 értékét a t1 értékével példányosítja. A t2 címet küldi, amely megtartja t1 értékét, és x-hez van rendelve. Létezik egy get függvény, amely visszaadja az x értékét.

A fő funkciónak van egy osztályteszt objektuma, t1. Van egy érték társítva ehhez az objektumhoz, ez egy paraméter. A fő funkciónak van egy másik osztályteszt objektuma, az úgynevezett t2. Ezt a t1 változó használatával inicializáljuk, és itt meghívjuk a másolás konstruktort. Végül a get függvényt meghívjuk t1 és t2 vonatkozásában, hogy megkapjuk az x értékét.

Típusok

A másolatkészítőnek két típusa van.
⦁ Sekély másolat készítő
⦁ Mély másolat készítő

Folytatás ezzel a cikkel a Copy Constructor programról a C ++ nyelven

Sekély másolat készítő:

A sekély másolat készítő egy alapértelmezett másolat készítő.

Példa:

Két ember egyszerre fér hozzá egy adatbázishoz, és két különböző rendszeren változtat az értékeken. Ha módosítják az adatbázist, akkor mindkét változás megjelenik az adatbázisban. Mindkét objektum ugyanarra a memóriahelyre fog mutatni. Ez a Shallow Copy Constructor. Ez többnyire akkor fordul elő, amikor az alapértelmezett másolatkészítővel dolgozunk. Itt van egy példa kód: sekély másolás készítő:

scrum master szerepek és felelősségek pdf
#include névtér használatával std osztály teszt {public: int y, z teszt (int y1, int z1) {y = y1 z = z1}} int main () {teszt a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

Kimenet:

Magyarázat:

A fenti kódban a fordító által biztosított alapértelmezett másolat-készítőt használjuk. Ezért ez egy sekély másolat készítő.

Folytatás ezzel a cikkel a Copy Constructor programról a C ++ nyelven

Mély másolat készítő

A Deep Copy Constructor egy felhasználó által definiált másolási konstruktor.
Például:
Amikor két embernek előadást kell tartania, és mindkettő ugyanabból a forrásból másol, a példányok külön vannak. Tehát, ha módosításokat végez, csak a másik példányt nem érinti. Ez a Deep Copy Constructor. Mindkét objektum különböző memóriahelyekre fog mutatni, és az egyik változásának nincs hatása a másikra. A memória dinamikusan van lefoglalva.

Itt van egy példa kód: Mély másolat készítő:

#include névtér használatával std osztály teszt {private: int x public: test (int x1) {x = x1} test (const teszt & t2) {x = t2.x} int getX () {return x}} int main () {teszt t1 (7) // A normál konstruktort itt hívjuk meg: teszt t2 = t1 // A másoló konstruktort itt hívjuk cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Kimenet:

java nyelven átutalva

Magyarázat

Ez ugyanaz a kód, amelyet fentebb használtunk, hasonló kimenetet adva. Ez egy felhasználó által definiált másolás-készítő, tehát egy mély másolás-készítő.

Így a „Copy Constructor in C ++” című cikkünk végére értünk. Ha többet szeretne megtudni, nézze meg a Edureka, egy megbízható online tanulási társaság. Az Edureka Java J2EE és SOA képzési és tanúsítási tanfolyamát arra tervezték, hogy mind az alapvető, mind a fejlett Java koncepciókra kiképezzen különféle Java keretrendszereket, például a Hibernate & Spring.

Van egy kérdésünk? Kérjük, említse meg a blog megjegyzés rovatában, és a lehető leghamarabb kapcsolatba lépünk Önnel.