Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
 recenziu , kedy volať kopírovacie konštruktor . Existujú tri situácie : . Pri vytváraní objektu zo existujúci objekt rovnakého typu , keď predáte objekt hodnotou na funkciu a ak je funkcia vracia objekt 
 2 
 Vedieť , kedy vaše C + + trieda potrebuje kopírovací konštruktor . To sa scvrkáva na to . Ak vaša trieda má ukazovatele a vykoná dynamického prideľovania pamäte , potom musíte dať explicitné kopírovacie konštruktor . 
 3 
 Pozrite sa na príklad , kde nemusíte definovať konštruktor C + + triedy . Trieda X má len zásobník premenné a žiadne odkazy . Plytkej kópie je dostačujúca skopírovať hodnoty z existujúceho objektu do nového objektu . Kompilátor môže to urobiť automaticky , takže nemusíte definovať konštruktor kópie pre triedu X : 
  triedy X { 
 int num ; 
 verejnosť : 
 X ( ) : num ( 0 ) { } 
 ~ X ( ) ; } 
 , 
 4 
 Preštudujte príklad , ktorý si vyžaduje jednoznačnú špecifikáciu copy - konštruktory . Ako môžete vidieť , veľkosť reťazca , N , nie je pevne hodnotu , ale je určená pre užívateľov . Ak chcete vytvoriť B od A ako vo výraze " ZB ( A ) , " musíte povedať kompilátora , koľko pamäte prideliť pre B. miesto , ako to urobiť , je kopírovanie konstruktoru , takto : 
  trieda Z { 
 int N ; 
 char * str , 
 verejnosť : 
 Z ( int n) : N ( n) { 
 str = new char [ N ] ; 
 } 
 z ( z & iné ) { 
 str = new char [ other.GetLen ( ) ] ; 
 //kopírovať dáta zo str " iný " na str " to " 
 } 
 ~ Z ( ) { 
 delete [ ] str ; 
 } 
 int GetLen ( ) const { 
 návrat N ; 
 } 
 } ;