22. maj 2002 - 15:43Der er
21 kommentarer og 2 løsninger
Copy-constructor
Jeg har brug for at kunne lave kopier af eksisterende objekter... Hvis man ikke implimenterer en copy-constructor, skulle C++ gerne implicit stille en til rådighed.
Hvis de pågældende objekter indeholder 2 int, og 2 pointere af samme type som den pågældende klasse - er der så noget problem i at anvende den implicitte copy-construktor??? Jeg har læst noget om, at den kopierer primitive datatyper og pointere bitwise, hvilket kan give problemer... men hvilke - og er de der i mit tilfælde?!?
Desuden hvordan ser en copyconstruktor ud, hvis man selv skal lave den? Og hvordan ser kaldet ud til den - hvis man f.eks. har en pointer i forvejen, som man vil have initialiseret til returtypen fra copy-construktoren???
har nu styr på at lave copy-constructoren... hvornår er det nødvendigt at lave en sådan?? Og hvordan sætter jeg en i forvejen erklæret pointer til at blive instansieret med returværdien fra copy-constructoren??
Den copy konstrutor compileren laver, gør memberwise copy som du siger.
det vil sige en ren hukommelses kopieren (1:1). Derfor kan du ikke anvende den ved pointere og reference, da de simpelhen ville pege på de samme "fysike" objekter.
i instance1; instance1->var = new int(10);
i instance2 = instance1;
instance2->var, instance1->var ville så pege du det samme allokere element, og ville ikke have en kopi hver.
Tror, at jeg har fanget, hvorfor implicit copy constructor ikke spiller... men hvordan sætter jeg (rent syntaktisk) en allerede erklæret pointer til at pege på kopien af det oprindelige objekt (som vel på en eller anden måde kommer tilbage fra copy constructoren - returværdi eller ej)??
Det kan være, at spørgsmålet allerede er blevet besvaret, men i så fald har jeg ikke lige fanget den... så vi tager fra Adam og Eva :) Min copy-constructor ser nu således nu:
TreeNode::TreeNode(const TreeNode& node) { value = node.value; balance = node.balance; left = node.left; right = node.right; }
Et andet sted har jeg WantedCopyOfNode af typen TreeNode* og Node af typen TreeNode*. Hvordan får jeg taget en kopi af objektet bag Node og sat WantedCopyOfNode til at pege på denne???
Selvfølgelig!!! Synes ellers, at jeg havde prøvet alle muligheder :) Det er sgu en stinker at gå fra Java til C++, men mon ikke Eksperten kan bevare smilene alligevel ;)
chries får flest point pga. de mere skarpe svar - eller bedre evne til at gætte en C++ novices kvaler :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.