hur man skriver en kopia konstruktor

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

  • kopia konstruktorn har sig själv som argument med ” const ” sökord . Detta säkerställer att inga ändringar , avsiktliga eller ej, görs till den ursprungliga under kopieringen . Det är också gått med ” ”-symbolen , för att säkerställa att källan kopia som skickas till funktionen genom hänvisning . Detta förhindrar en cyklisk redundans fel : För att bli godkänd i sin vanilj form ” av värde ” , en kopia skall göras . Det är dock den funktion för att skapa kopior som skrivs .
  • Kopian constructor aldrig kommer att behöva kallas direkt . Istället kommer det att kallas när en kopia måste göras med ett &#039= &#039 tecknet .
  • Visited 1 times, 1 visit(s) today

    コメント

    タイトルとURLをコピーしました