Vad är en kopieringskonstruktör?
En kopieringskonstruktör är en speciell funktion i C ++, och andra språk som påverkas av C ++, som kopierar ett kodningsobjekt. Programmeraren gör detta genom att lägga till kopieringskonstruktördeklarationen 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 anger fel kodning i objektet. När kopian är gjord, måste den ha en annan minnespekare eller så pekar den 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 oberoende; om det ursprungliga objektet raderas kommer kopian också att vara.
När en programmerare använder en kopieringskonstruktör ber han eller hon koden att kopiera ett objekt som redan finns i koden. För att göra detta måste programmeraren först använda en deklaration för att berätta kodningen att utföra kopieringsfunktionen. Programmeraren måste också referera till ett annat objekt, så objektet måste redan byggas eller så finns det inget 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 koda igen, kan programmeraren bara lägga till en referens så blir objektet klart. Detta har en annan dold fördel med konsekvent och korrekt kodning. Så länge originalobjektet är korrekt kodat 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 säger funktionen exakt var man ska leta i minnet efter viss information eller var den kan lagra data. Programmeraren måste specificera en ny minnespekare när en kopieringskonstruktor används; annars använder de två objekten samma minnesutrymme. På ytan verkar detta 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 in 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åste vara försiktiga med att radera ett objekt eftersom kopieringsobjekt för objekten inte kan fungera oberoende. Om programmeraren raderar det ursprungliga objektet har det kopierade objektet inget att hänvisa till. Utan kod att referera kommer det kopierade objektet inte att kunna utföra sin uppgift och blir värdelös.