Úvod do Copy Constructor v C ++

Programovací jazyky nám poskytují různé funkce, které lze využít k vývoji aplikace. V případě jazyků střední úrovně mohou být funkce méně srovnatelné s jazyky na vysoké úrovni, ale jakékoli možnosti, které nabízejí, jsou dostatečné pro vývoj významných aplikací. V této části se budeme učit o kopií Constructors. Konstruktor může být definován jako speciální funkce, která má stejný název jako třída, ve které byl definován. Konstruktor je volán automaticky při inicializaci objektu této třídy. Dalo by se říci, že inicializace objektu, pokud třída implicitně volá konstruktor. Pokud je konstruktor přetížen, musí být při inicializaci hodnoty předány společně s objektem. Zde je typ konstruktoru, kterého se budeme učit, velmi jedinečný a známý jako kopie Constructor. Tento konstruktor pracuje spíše s jinými objekty než s normálními hodnotami.

Jak Copy Constructor pracuje v C ++?

Kopírovat konstruktor lze definovat jako zvláštní typ konstruktoru, který se používá k deklarování objektu a jeho inicializaci pomocí jiných objektů. Normální konstruktor zavolal při inicializaci objektu této třídy. Pokud je konstruktor přetížen několika parametry, než inicializace objektu a předání stejného počtu argumentů, vyvolá parametr přetížení. Protože je konstruktor kopií přetížený, mohl by být volán, když je objekt inicializován pomocí argumentu a argument musí předat hodnotu objektu, nikoli jakoukoli normální hodnotu.

Jakmile je hodnota přijatá parametrem přetíženého konstruktoru nalezena jako objekt, bude vyvolán konstruktor kopie a spustí se sada příkazů definovaných v konstruktoru kopie. Před použitím kopírovacího konstruktoru musíme vytvořit objekt stejné třídy. Jasně uvádí přístup, že jakýkoli program, který je určen k implementaci konstruktoru kopie, by měl mít také výchozí nebo parametrizovaný konstruktor, aby mohl být objekt vytvořen, což pomůže zapojit konstruktoru kopie.

Celkový scénář lze považovat za využití jednoho objektu za účelem vytvoření dalšího objektu. Všechny hodnoty spojené s objektem, který se používá k inicializaci objektu pomocí konstruktoru kopií, budou přiděleny nově inicializovanému objektu. To znamená, že pokud je hodnota libovolné proměnné použita prvním objektem, stejnou proměnnou může být použit objekt, který je inicializován konstruktorem kopie. Funkce konstruktoru kopií je považována za velmi důležitou a pro některé aplikace je vývoj velmi vhodný. Jeho vlastnosti pro použití odkazu na objekt stejné třídy pomáhají při vývoji aplikace, která má požadavek, který lze splnit pouze pomocí konstruktoru kopií. Přestože není využíván tak často jako výchozí nebo parametrizovaný konstruktor, je dostatečná síla přispívat k přidávání nových funkcí do aplikace.

Příklad

Pojďme porozumět konceptu konstruktéra kopií pomocí příkladu. Zde budeme pracovat na jednoduchém příkladu, který vám ukáže, jak funguje konstruktor kopií a jak může přistupovat k hodnotám, které byly vázány na objekt, pomocí kterého je nový objekt vytvořen konstruktorem kopií. Níže uvedený obrázek vám dá představu o tom, jak je odlišné volat konstruktor kopií ve srovnání s voláním normálního přetíženého konstruktoru.

Program

#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< )

V tomto programu jsme nazvali parametrizovaný konstruktor obejít argument přes a1. Předaná hodnota je celé číslo, protože parametrizovaný konstruktor byl definován tak, aby akceptoval pouze celé číslo. Když je hodnota 50 předána konstruktoru, byla hodnota přiřazena proměnné pojmenované var. Poté byl objekt a1 předán konstruktoru kopií prostřednictvím a2. Jakmile konstruktér kopie přijme odkaz na objekt, svázal hodnotu přiřazenou prvnímu objektu s nově vytvořeným objektem. Toto je jednoduchý příklad pro vysvětlení pojmu konstruktéra kopií. Mohlo by být použito v několika dalších programech k získání různých funkcí v aplikaci.

Výstup:

60

Pravidla a předpisy pro kopírovací konstruktor v C ++

Copy Constructor je považován za trochu odlišný od výchozího nebo parametrizovaného konstruktoru. Na jedné straně, kde normální konstruktor pracuje s hodnotou běžného datového typu, na druhé straně kopírovací konstruktor pracuje s dříve vytvořeným objektem stejné třídy. Při použití kopírovacího konstruktoru je třeba zajistit, aby parametry předávané kopírovacím konstruktorem byly použity spolu se znakem ampersand (&), protože se jedná o speciální znak, který se používá k udržení odkazu na objekt. Pokud se při implementaci konstruktoru kopie nepoužije ampersand, nebude to již konstruktér kopie, ale bude automaticky považován za parametrizovaný konstruktor.

Pokud jde o volání konstruktoru kopií, musíme se ujistit, že hodnota předaná jako argumenty by měla nést odkaz na objekt spíše než jakoukoli hodnotu, která patří do běžného datového typu. Toto je několik věcí, které je třeba při implementaci konstruktoru kopií v programovacím jazyce C ++ považovat za velmi ostře. Pokaždé, když použijeme konstruktor kopií, musíme se ujistit, že jej správně odlišujeme od parametrizovaného konstruktoru, protože pokud to selže, zcela to změní funkčnost programu a povede k nesprávnému generování výstupu.

Závěr

Konstruktor kopie je považován za speciální konstruktor, který pracuje s odkazem na objekt stejné třídy. Používá se k přivedení několika funkcí do aplikace. V porovnání s výchozím konstruktorem se konstruktér kopií nepoužívá v jednoduchých programech příliš často, ale pokud jde o vývoj složitých aplikací, které musí být nasazeny v produkčním prostředí, je zde použit konstruktor kopií a také je vývoj aplikací docela pohodlný. .

Doporučené články

Toto je průvodce kopírováním konstruktorů v C ++. Zde diskutujeme úvod a jak funguje kopírovací konstruktor v C ++ spolu s pravidly a předpisy pro kopírovací konstruktor v C ++. Další informace naleznete také v následujících článcích -

  1. Kopírovat konstruktor v Javě
  2. Kopírovat konstruktor v C #
  3. Konstruktor v C ++
  4. Použití konstruktoru v C
  5. Typy konstruktoru v jazyce C # s implementací kódu

Kategorie: