Ich verwende das öfter: Eine Function die Parameter hat, deren ich eine Klasse übergebe, dass ich diese Klasse als ByRef Parameter übergebe und nicht als ByVal. Auch wenn ich die Werte der Klassenvariablen usw. nicht verändern will.
Aus dem einfachen Grund, weil der Compiler beim Parameter ByVal vermutlich eine Speicherkopie der Klasse erstellt, und der ByRef Parameter übergibt dem Compiler nur die Adresse der Klasse. Also wird keine Kopie im Speicher gemacht.
Oder täusche ich mich da, und auch der ByRef Parameter erstellt eine Speicherkopie? Auch wenn die Werte dann gespiegelt sind.
Ich meine es macht nur Sinn, wenn die Klasse in der Funktion dann echt nicht neu erstellt wird, und nur der Zeiger übergeben wird. Dann macht es allerdings durchaus Sinn. Das dann die Klasse nicht Schreibgeschützt ist, ist mir ja egal. Das wollte ich ja dann so bzw liegt in meiner Verantwortung... Denn wenn dadurch kein Abbild gemacht wird, habe ich ja dadurch einen Vorteil.
Die Frage ist, wie sieht das der Compiler?
Aus dem einfachen Grund, weil der Compiler beim Parameter ByVal vermutlich eine Speicherkopie der Klasse erstellt, und der ByRef Parameter übergibt dem Compiler nur die Adresse der Klasse. Also wird keine Kopie im Speicher gemacht.
Oder täusche ich mich da, und auch der ByRef Parameter erstellt eine Speicherkopie? Auch wenn die Werte dann gespiegelt sind.
Ich meine es macht nur Sinn, wenn die Klasse in der Funktion dann echt nicht neu erstellt wird, und nur der Zeiger übergeben wird. Dann macht es allerdings durchaus Sinn. Das dann die Klasse nicht Schreibgeschützt ist, ist mir ja egal. Das wollte ich ja dann so bzw liegt in meiner Verantwortung... Denn wenn dadurch kein Abbild gemacht wird, habe ich ja dadurch einen Vorteil.
Die Frage ist, wie sieht das der Compiler?