I C + + , är en kopia konstruktor en speciell metod som skapats inom en klass som returnerar en exakt kopia av objektet som anropar den . För de enklaste klasserna , C + + språket hanterar skapandet av exemplar konstruktorer automatiskt . Men om din klass innehåller en pekare till en dynamiskt tilldelade området av data , måste du skriva en kopia konstruktör . Detta exempel förutsätter att du skriver en kopia konstruktor för en klass som heter
Du behöver ” Circle ”.
Computer
C + + klass som använder dynamiskt tilldelade minnet eller anteckningar.
1
Lägg till följande i filen circle. h att förklara funktionen kopia bygga: .
Circle ( const Circle C )
Det bör naturligtvis tas upp i den offentliga delen av filen, inte privat .
2 .
Lägg till följande i filen circle. c att lägga till programmering kopia bygga:
Cirkel : : Circle ( const Circle C ) {
//Resten av koden kommer att gå här
. }
3 .
Skriv kod för att kopiera alla de statiska data från första klass till den andra .
x=cx ;
y=cy ,
r=cr ;
Denna information skulle ha varit kopieras, även med standard kopia konstruktorn.
4 .
Skriv kod för att kopiera dynamiskt minne och pekare . Tänk dig en variabel som är en del av cirkeln ”Färg * C. ” Eftersom detta är en pekare , försöker helt enkelt kopiera den rörliga kommer bara kopierar ett minne adress , och detta kommer att leda till problem längre fram om en av de två cirklarna skall utgå . Så använder du ”de-referens ” operatör :
color=c. * färg
Detta säkerställer att ”färg” variabla inom det nya cirkeln är en kopia av värdet av den ursprungliga färg , och inte bara en kopia av en delad minnesplats .
tips och varningar
コメント