mar Skrevet 9. september 2007 Del Skrevet 9. september 2007 Operator overloading vil si at man gir +, -, * og liknende operatorer egne betydninger.. Så om jeg f.eks. har en Matrise-klasse, så kan jeg f.eks. utføre matrisemultiplikasjon ved å skrive matrix1 *= matrix2; Dette er et kraftig verktøy for å kunne gjøre deler av koden mer ryddig Altså, man bestemmer selv hva +, - osv. gjør, om man ønsker å gi dem noen betydning i det hele tatt. 9429136[/snapback] Blir det egentlig så mye mer ryddig enn feks: matrix1 = matrix1.mult(matrix2)? Må si at jeg egentlig ikke helt ser poenget her. Er greit at man sparer noen tegn her og der, men noe mer ryddig blir det vel egentlig ikke. 9438955[/snapback] Så du mener altså at Matrix projection = perspective.getMultipliedWith(camera.z.getMultipliedWith(camera.y.getMultipliedWith(camera.x)).getMultipliedWith(camera.pos)).getMultipliedWith(obj.z.getMultipliedWith(obj.y.getMultipliedWith(obj.x)).getMultipliedWith(obj.pos))); er like ryddig og lett å skrive og forstå i forhold til Matrix projection = perspective * (((camera.z * camera.y * camera.x) * camera.pos) * ((obj.z * obj.y * obj.x) * obj.pos)); ? Må si at jeg egentlig ikke helt ser poenget her. Ser du virkelig ikke poenget her? Håper jeg hjalp deg å forstå... 9460703[/snapback] Sorry men ser det fremdeles ikke. Skjønner jo at det lettere å bare skrive "*" og at det blir ferre tegn, men ser ikke det helt store i det. Under er forslag til en Java løsning, kunne sikkert vært bedre, men jeg vil påstå at den er ganske ryddig. Grunnet tiden på døgnet tar jeg forbehold når det gjelder paranteser Tror jeg klarte å lese ditt eksempel på riktig måte. //Metode signatur Matrix mult (Matrix... args); //Ditt eksempel Matrix camera = mult(mult (camerea.z, camera.y, camera.x), camera.pos); Matrix obj = mult(mult(obj.z, obj.y, obj.x), obj.pos); Matrix camObj = mult (camera, obj); Matrix projection = mult (perspective, camObj); //På en linje Matrix projection = mult (perspective, mult (mult(mult (camerea.z, camera.y, camera.x), camera.pos), mult(mult(obj.z, obj.y, obj.x), obj.pos))); Lenke til kommentar
Zerd Skrevet 9. september 2007 Del Skrevet 9. september 2007 Som nevnt må du vite at << kan bety bitwise shift OG å skrive til en stream... Forvirrende spør du meg Da er det lettere med metoder med beskrivende navn... 9461096[/snapback] Derfor bør det være valgfritt. Lenke til kommentar
LostOblivion Skrevet 9. september 2007 Forfatter Del Skrevet 9. september 2007 (endret) Poenget her er jo faktisk at man skal kunne kalle forskjellige operasjoner med de enkleste uttrykkene mulig. Det er i seg selv her å overloade operatorer. Jeg mener nå at Java hvertfall burde ha denne muligheten der, så de som vil benytte seg av operator overloading skulle kunne gjøre det. De som ikke vil, og synes direkte kall av funksjoner er bedre, kan jo bare fortsette med det. Skjønner jo at det lettere å bare skrive "*" og at det blir ferre tegn, men ser ikke det helt store i det. - Da har du skjønt det. Hvor stort skal du ha det? Som Jaffe sier, det er konseptet med operator overloading i Java som er poenget her. Hva folk mener er bedre, får de lage sin egen thread om. Endret 9. september 2007 av LostOblivion Lenke til kommentar
Peter Skrevet 10. september 2007 Del Skrevet 10. september 2007 Operator overloading vil uansett ikke redusere språket på noen måte, så lenge man har støtte for begge deler, noe man naturlig nok vil ha. Samtidig irriterer det vettet av meg at man ikke kan angi standardverdier for argumenter til metoder på en fin måte, man må liksom lage <antall valgfrie argumenter> + 1 metoder. Samme problemet i C# forsåvidt. Føler at språkutviklerene prøver å bestemme hva og hvordan jeg skal utvikle kode. Lenke til kommentar
CronoMan Skrevet 11. september 2007 Del Skrevet 11. september 2007 Operator overloading vil uansett ikke redusere språket på noen måte, så lenge man har støtte for begge deler, noe man naturlig nok vil ha. Samtidig irriterer det vettet av meg at man ikke kan angi standardverdier for argumenter til metoder på en fin måte, man må liksom lage <antall valgfrie argumenter> + 1 metoder. Samme problemet i C# forsåvidt. Føler at språkutviklerene prøver å bestemme hva og hvordan jeg skal utvikle kode. 9463605[/snapback] Operator Overloading er et must. Er ikke muligheten i språket, så er det fordi det er et mikke mus-språk Matriser er jo prakt-eksempelet på dette. Om man ikke ser det, så er man blind. Det med argumentene må jeg si meg enig i. Liker veldig godt i C++ og VB6 at man kan skrive void blah(int a = 5, char b = 'h') etc. Overloading er ingen pen måte å adressere det på. Apropos << bitshift/stream; personlig kan jeg ikke fordra iostream, da bruker jeg heller string formating og printf 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å