Forum: Programmieren allgemein
by Zacherl,
9. Jun 2017
Genau, tatsächlich ist bei trivialen Datentypen das CallByValue sogar meist performanter, weil entsprechende Werte einfach in Registern liegen bleiben können, während der Wert für eine Referenz ja zwingend auf dem Stack oder dem Heap angesiedelt sein muss. Dementsprechend macht Delphi das hier schon ziemlich gut.
Das mit der Beschreibbarkeit ist auch korrekt. Das passiert komplett zur...
Forum: Programmieren allgemein
by Zacherl,
9. Jun 2017
Das kommt drauf an. Bei trivialen Datentypen verhält sich const wie CallByValue:
Unit1.pas.45: A(X);
005CDEEF 8B45F8 mov eax, // CallByValue
005CDEF2 E8D9FFFFFF call A // procedure A(X: Integer)
Unit1.pas.46: B(X);
005CDEF7 8D45F8 lea eax, // CallByReference
005CDEFA E8D5FFFFFF call B // procedure B(var X: Integer)
Unit1.pas.47: C(X);
005CDEFF 8B45F8 ...
Forum: Programmieren allgemein
by Zacherl,
8. Jun 2017
Im Bezug auf Strings hatte ich vor kurzem schonmal auf eine ähnliche Frage geantwortet:
http://www.delphipraxis.net/1359775-post23.html
Nee, vor solchen Sachen schützt C einen auch nicht. Könnte ja auch gewollt sein, selbst wenn es wenig Sinn ergibt.
Ich glaube Mavarik geht es um den Aspekt des "self documenting code". Natürlich ändert sich die Variable auch ohne const nicht nach dem...