Någon som vet hastighetsskilnaden på detta?
(*pointer).tmp vs pointer->tmp
6 svar · 326 visningar · startad av fnolis
Om man använder (*pointer).tmp... kommer verkligen "->" operatorn att anropas om den är övelagrad i klassen ? Någon som vet ?
// BeatBox
Samma hastighet.
Anledningen till att det är samma hastighet är att:
pPointer-\>GetAge();
"översätts" till:
(\*pPointer).GetAge();
av kompilatorn när du kompilera koden. Anledningen till att man skriver -> är att det skall vara "lättare" att förstå sig på.
Således kommer båda att resultera i samma kod och därmed samma exekveringshastighet.
Lycka till!
När det gäller frågeställningen om operatorn -> kommer att kallas på om man överlagra den, så finns det ett svar som jag skulle vilja ge.
UNDVIK detta!!! Om du vill överlagra operator -> så måste du vara en duktig programmerare på IDL programmering (som är ett script-språk som man kan använda sig av för att skapa kod som flera olika programmeringsspråk kan förstå).
Inte för att jag har tänkt överlagra "->"-operatorn, men av ren nyfikenhet, varför är det just IDL man måste tänka på om man gör så?
Iterface Description Language står det för och jag jobbar med det varje dag. Interfacebeskrivningar i COM brukar ju vara i IDL format.
Angående "->" operatorn så kan det ju vara så att man vill göra nått speciellt innan t ex en funktion anropas och jag förstår inte riktigt kopplingen till IDL.
// BeatBox
------------------
"Mörkrets gärningar, förekommer även på dagen"
Sixten Landby