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
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.