Dead_Rabbit Skrevet 13. desember 2009 Del Skrevet 13. desember 2009 Alle operatører skal ideelt returnere en kopi (noe du påpekte for noe kode jeg skrev som returnerte en referanse)Eneste forskjellen skal være verdien i kopien. ++2 = 3 2++ = 2 Uavhengig av om operatorene returnerer en kopi eller referanse, må postinkrement uansett lage en kopi av opprinnelig verdi, inkrementere seg selv, og returnere kopien. Selv om preinkrement returnerer en kopi istedenfor en referanse, slipper den jo da uansett unna med en kopiering mindre. I C++ er det generellt ansett å være "good practice" å bruke prefix-operatorene der det ikke spiller noen rolle hva man bruker. Lenke til kommentar
zotbar1234 Skrevet 13. desember 2009 Del Skrevet 13. desember 2009 Alle operatører skal ideelt returnere en kopi (...)Eneste forskjellen skal være verdien i kopien. Preinkrement: "The value is the new value of the operand; it is an lvalue" Postinkrement: "The result is an rvalue". Preinkrement kan brukes som argument dersom funksjonen for den korresponderende formelle parameteren forventer en T&. Postinkrement kan ikke brukes i den konteksten. Det er nok litt flere forskjeller enn bare hvilken verdi blir returnert. Postinkrement *må* returnere en kopi i en kontekst der den returnerte verdien blir brukt. Preinkrement kan returnere en T& (jeg vet faktisk ikke om preinkrement er tillatt til å returnere en kopi). ++2 = 32++ = 2 Mitt første spørsmål til dette var "hmm, returnerer preinkrement en modifiable lvalue da?" før jeg innså at "=" betyr "er lik", ikke "settes til" i denne konteksten ;D Lenke til kommentar
GeirGrusom Skrevet 13. desember 2009 Del Skrevet 13. desember 2009 hømm hømm hømm... Dere har nok rett ^^ Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå