Original geschrieben von samsara
Jetzt habe ich gelesen, dass pre-inkrementieren schneller geht.
Das kommt drauf an.
Wann also kann man ohne Effizienzeinbusse postinkrementieren benutzen?
Wenn es sich im einen eingebauten Datentyp handelt,oder um einen Pointer darauf,und der Ausdruck keine Seiteneffekte hat,dann ist es egal,ob Post- oder Preincrement.Es wird vom Compiler in äquivalenten Code umgesetzt.
Bsp
Code:
for(int i = 0;i < 10;i++)
{....
oder
i++;
++i;
In den Beipielen ist es egal.
Wichtig ist es bei komplexen Datentypen,zb. Iteratoren,weil hier muß ein vielleicht komplexes Objekt erzeugt werden beim Postincrement.
Problem hierbei ist,daß der Compiler nicht sagen kann,dann mach ich ebend die Preincrement-Variante,wegen Seiteneffekten.
Bsp
Code:
class KomplexeKlasse {
...
KomplexeKlasse& operator++() { //Preincrement
//incrementieren und zurückgeben
}
KomplexeKlasse operator++(int) { //Postincrement
//Temporäres Objekt erzeugen,this erhöhen,3.Weltkrieg auslösen,Temp zurückgeben
}
Lesezeichen