009
29.06.2004, 13:50 Uhr
ao
(Operator)
|
Zeiger auf irgendwelche Daten zurückzugeben ist zwar hoch performant, schafft aber enge Verquickungen zwischen der Funktion und dem Aufrufer.
Der Aufrufer muss wissen, woher die Funktion den betreffenden Speicher bekommen hat (dynamisch oder statisch), weil er ihn (je nachdem) nach Benutzung wieder freigeben muss oder nicht freigeben darf. Das bedeutet, man kann das Speichermanagement der Funktion nicht ändern, ohne alle (!) Aufrufstellen anzupassen. So was darf man sich nur ans Bein hängen, wenn ganz wichtige Gründe dafür sprechen.
Ein Ausweg ist
C++: |
int get_was_auch_immer (std::vector<int> & rnDataVec);
|
D.h. der Aufrufer beschafft das Vector-Objekt, reicht es der Funktion über Call-by-reference rein, bekommt es ausgefüllt zurück und ist auch für die umweltgerechte Entsorgung verantwortlich.
Hier sind die Kompetenzen klar verteilt, und es ist nicht weniger performant. Dieser Post wurde am 29.06.2004 um 13:50 Uhr von ao editiert. |