Im Bezug auf Strings hatte ich vor kurzem schonmal auf eine ähnliche Frage geantwortet:
http://www.delphipraxis.net/1359775-post23.html
Wie macht das den C? Den Zugriff auf die Globale Variable verhindern, weil das zufällig die gleiche Referenz ist?
Nee, vor solchen Sachen schützt C einen auch nicht. Könnte ja auch gewollt sein, selbst wenn es wenig Sinn ergibt.
Ich denke Const ist nicht nur für die Performance, sondern auch (für mich) so einen Art Flag...
Signalisiert mir Procedure Foo(Const AValue : Integer)
ändert nix an dem was ich Übergebe...
Nö, für den Aufrufer ändert sich doch nichts. Wenn die Methode kein
const
hätte erhält sie lokal auf dem Stack eine Kopie des Parameters, aber was kümmert das den Aufrufer?
Ich glaube Mavarik geht es um den Aspekt des "self documenting code". Natürlich ändert sich die Variable auch ohne
const
nicht nach dem Funktionsaufruf, aber z.b. Objektparameter deklariere ich auch gerne mit
const
, um zu signalisieren, dass ich das Objekt nicht verändere (auch wenn das aufgrund der fehlenden const correctness von Delphi natürlich funktionieren würde).