Skip to main content

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.Primárně to prospívá programátorovi 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ž vytvořen, nebo nebude existovat způsob, jak kopii provést.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 ++ vyžaduje mnoho funkcí 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 se to nemusí zdát špatné, ale může to vést k nesrovnalostem.Pokud například oba objekty sdílejí stejný ukazatel a jeden objekt se používá k předložení žádostí o půjčku, zatímco je zkopírovaný objekt podáván k předložení aplikací pro kreditní kartu, pak budou všechny žádosti o kreditní karty uloženy s žádosti o půjčku.

Programátoři musíDávejte pozor na vymazání 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, zkopírovaný objekt nebude schopen vykonávat svůj úkol a stane se zbytečným.