Co je to kopírovací konstruktor?
Konstruktor kopírování je speciální funkcí v C ++ a další jazyky ovlivněné C ++, které kopírují kódovací objekt. Programátor to dělá přidáním prohlášení konstruktoru kopírování a odkazováním na objekt. To je především přínosem programátora tím, že ušetří čas, ale také zajišťuje, že programátor nevstoupí do nesprávně kódování objektu. Po provedení kopie musí mít jiný ukazatel paměti nebo bude ukazovat na stejnou část, na kterou směřuje původní objekt. Jednou z hlavních nevýhod používání konstruktérů kopírování je to, že nemohou fungovat samostatně; Pokud je původní objekt vymazán, bude také kopie. Abychom toho mohli provést, musí programátor nejprve použít deklaraci, aby sdělil kódování pro provedení funkce kopírování. Programátor musí také odkazovat na jiný objekt, takže objekt musí být již postaven nebo tam bude no způsob, jak provést kopii.
Hlavní výhodou používání konstruktoru kopírování je, že šetří čas. Místo toho, aby musel znovu rentpetovat stejné funkce a znovu kódovat, může programátor pouze přidat odkaz a objekt bude připraven. To má další skrytou výhodu při konzistentním a přesném kódování. Pokud je původní objekt kódován správně, bude mít zkopírovaný objekt také správné kódování. Obě tyto výhody jsou nejvíce patrné u složitých objektů, ale programátoři mohou také těžit z kopírování jednoduchých objektů.
V jazycích C ++ mnoho funkcí vyžaduje ukazatel paměti. To říká, že funkce přesně, kde hledat do paměti určité informace, nebo kde může ukládat data. Programátor musí zadat nový ukazatel paměti, když je použit kopírovací konstruktor; Jinak budou oba objekty využívat stejný paměťový prostor. Na povrchu to nemusí vypadat špatné, ale může to vyčistitD na nesrovnalosti. Pokud například oba objekty sdílejí stejný ukazatel a jeden objekt se použije k předložení žádostí o půjčku, zatímco je zkopírovaný objekt podáván k předložení žádostí o kreditní kartu, pak budou všechny žádosti o kreditní karty uloženy s žádosti o půjčku.
programátoři musí být opatrní před vymazáním objektu, protože objekty konstruktoru kopírování nemohou fungovat samostatně. Pokud programátor vymaže původní objekt, pak zkopírovaný objekt nebude mít co odkazovat. Bez kódu k odkazu nebude zkopírovaný objekt schopen vykonávat svůj úkol a stane se zbytečným.