Skip to main content

Vad är en kopieringskonstruktör?

En kopieringskonstruktör är en speciell funktion i C ++, och andra språk påverkade av C ++, som kopierar ett kodningsobjekt.Programmeraren gör detta genom att lägga till kopieringskonstruktörsdeklarationen och hänvisa till ett objekt.I första hand gynnar detta programmeraren genom att spara tid, men det säkerställer också att programmeraren inte kommer in i objektets kodning felaktigt.När kopian görs måste den ha en annan minnespekare eller den kommer att peka på samma avsnitt som det ursprungliga objektet pekar på.En av de största nackdelarna med att använda kopieringskonstruktörer är att de inte kan fungera självständigt;Om det ursprungliga objektet raderas, kommer kopian också att vara.

När en programmerare använder en kopieringskonstruktör, säger han eller hon koden att kopiera ett objekt som redan är listat i koden.För att göra detta måste programmeraren först använda en deklaration för att berätta kodningen för att utföra kopieringsfunktionen.Programmeraren måste också hänvisa till ett annat objekt, så objektet måste redan byggas eller det kommer inte att finnas något sätt att utföra kopian.

Den största fördelen med att använda en kopieringskonstruktör är att det sparar tid.Istället för att behöva skriva om samma funktioner och kodning igen, kan programmeraren bara lägga till en referens och objektet kommer att vara redo.Detta har en annan dold fördel i konsekvent och exakt kodning.Så länge det ursprungliga objektet kodas korrekt kommer det kopierade objektet också att ha rätt kodning.Båda dessa fördelar är mest uppenbara med komplexa objekt, men programmerare kan också dra nytta av att kopiera enkla objekt.

På C ++ -språk kräver många funktioner en minnespekare.Detta berättar funktionen exakt var man ska leta i minnet efter viss information eller var den kan lagra data.Programmeraren måste ange en ny minnespekare när en kopieringskonstruktör används;Annars kommer de två objekten att använda samma minnesutrymme.På ytan verkar det kanske inte dåligt, men det kan leda till inkonsekvenser.Till exempel, om båda objekten delar samma pekare och ett objekt används för att skicka låneansökningar medan det kopierade objektet görs för att skicka in kreditkortsansökningar, kommer alla kreditkortsansökningar att lagras med låneansökningarna.

Programmerare måsteVar försiktig med att radera ett objekt, eftersom kopieringskonstruktörobjekt inte kan fungera oberoende.Om programmeraren raderar det ursprungliga objektet kommer det kopierade objektet inte att ha något att referera till.Utan kod att referera kommer det kopierade objektet inte att kunna utföra sin uppgift och blir värdelös.