webForumDet fria alternativet

(*pointer).tmp vs pointer->tmp

C/C++

6 svar · 328 visningar · startad av fnolis

Medlem sedan sep. 200162 inlägg
Frågan#1

Någon som vet hastighetsskilnaden på detta?

Medlem sedan okt. 20013 217 inlägg
#2

Om man använder (*pointer).tmp... kommer verkligen "->" operatorn att anropas om den är övelagrad i klassen ? Någon som vet ?

// BeatBox

Medlem sedan okt. 20011 inlägg
#3

Samma hastighet.

Medlem sedan nov. 200114 inlägg
#4

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!

Medlem sedan nov. 200114 inlägg
#5

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å).

Medlem sedan maj 20018 027 inlägg
#6

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å?

Medlem sedan okt. 20013 217 inlägg
#7

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

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)