hvordan man skriver en kopikonstruktionsfunktionen

Indlæg af Dan Dejligbjerg     opdateret: 2012-02-15

I C + + , er en kopi constructor en særlig metode oprettet i en klasse, der returnerer en nøjagtig kopi af det objekt , der kalder det . For den enkleste klasser , C + + sproget håndterer oprettelsen af eksemplar konstruktører automatisk . Men hvis din klasse indeholder en pegepind til en dynamisk tildelt dataområde , skal du skrive en kopikonstruktionsfunktionen . Dette eksempel antager, at du er ved at skrive en kopikonstruktionsfunktionen for en klasse ved navn

Du har brug for " Circle ". : .
Computer
C + + klasse , der bruger dynamisk tildelte hukommelse eller pegepinde .


1
Tilføj følgende til den circle. h filen til at erklære kopikonstruktionsfunktionen funktion : .
Circle ( const Circle c )

Det skal naturligvis erklæret være i offentlighedens del af filen , ikke det private.
2 .
tilføjes følgende til circle. c fil at tilføje kopikonstruktionsfunktionen programmering :
Circle : : Circle ( const Circle c ) {
//Resten af koden vil gå her
. }

3 .
Skriv koden for at kopiere alle de statiske data fra den første klasse til den anden .
x=cx ;
y=cy ;
r=cr ;
Denne information ville have været kopieret , selv af standard kopikonstruktionsfunktionen .
4 .
Skriv koden til at kopiere dynamisk hukommelse og pegepinde . Overvej en variabel , der er en del af cirklen kaldet " Color * c. " Da dette er en pegepind , forsøger blot at kopiere den variable vil kun kopiere en hukommelse adresse , og dette vil føre til problemer senere hen , hvis en af de to cirkler er slettet. Så bruge " de-reference " operatør :
color=c. * farve
Dette sikrer, at 'farve ' variable inden for det nye cirkel er en kopi af værdien af den oprindelige farve , og ikke blot en kopi af en delt hukommelse placering .

Tips og advarsler


  • kopikonstruktionsfunktionen tager sig selv som argument med ' const ' søgeord . Dette sikrer , at der ikke foretages ændringer , tilsigtet eller på anden måde , er lavet til den oprindelige i løbet af kopieringen . Det er også gået med " " symbolet , for at sikre, at kilden kopi gået ind i funktionen ved henvisning . Dette forhindrer en cyklisk redundans fejl : For at bestå den i sin vanille form " efter værdi ' , en kopi skal gøres . Men det er den funktion for at skabe kopier , der skrives .
  • kopikonstruktionsfunktionen kommer aldrig til at blive kaldt direkte . I stedet vil det blive kaldt , når en kopi skal gøres med en '=' tegnet .


  • Previous:hvordan man beregner en hukommelse adresse Next:hvordan man åbner en postsættet



     

    Kommentarer

    Code:
    change