Citat:
Ursprungligen postat av
Doggepe
Har aldrig gått igenom detta och ser nu detta i min lärobok, förstår inte riktigt vad som menas med detta? Någon som kan bidra?
Input : Type obj1 , Type obj2 ;
obj1 .setA(10);
obj2 = obj1;
obj2 .setA(20);
obj1 .setA(30);
Beskriv effekterna av kodavsnittet och hur de skiljer sig åt beroende på om Type är en värdetyp eller referenstyp.
Man kan börja med att läsa
https://en.wikipedia.org/wiki/Evalua...l_by_reference och
https://en.wikipedia.org/wiki/Evalua...#Call_by_value för att få en uppfattning om vad det handlar om.
Det som åsyftas är alltså om obj1 och obj2 är referenser till ett objekt, eller ett konkret värde.
I fallet med referenser skulle du med raden
skriva över referensen obj2 så att den pekar på obj1 istället. Det innebär att en användning av ob2 kommer framöver ge samma resultat som om obj1 användes. Om du alltså ändrar något med referensen obj1 kommer du kunna se förändringen om du sedan använder obj2. beroende på att de pekar på samma objekt.
I fallet värde så får du en kopia gjord. Det innebär att raden
kommer tilldelas värdet, men ej referensen, det är fortfarande 2 olika objekt som åsyftas.
Ändrar du något med obj2 kommer obj1 ändå hålla sitt gamla värde, för det är två olika objekt, de refererar inte till samma minnesarea.
Aningen svårt att beskriva med text, man skulle behöva rita några streck med, men förhoppningsvis blev det lite klarare?