bei der 2. variante hat man aber die controlle über die "lebensdauer" seines objektes. wenn ich mein objekt auch noch außerhalb der erstellenden funktion verwenden will, komme ich doch um die 2. variante nicht rum. es sei denn ich arbeite nicht mit zeigern, sondern mach mir ne komplette kopie. was ist besser?
Osram hat's auf den Punkt gebracht: Variante 1 ist schöner, aber manchmal kommt man halt um Variante 2 nicht herum. Das hängt halt von der jeweiligen Anwendung ab.
@Osram: Ist heftig, wie viel die Verwaltungsinfo ausmachen, nicht? Das kann man leicht unterschätzen. Und starke Fragmentierung führt zu heftigen Problemen. Ich musste vor Jahren mal meinen eigenen new-Opertator schreiben, weil der Borland-Compiler bei den vielen Objekten schlapp gemacht hat.
Ist übrigens ein Vorteil von C# bzw. .NET, der gerne verschwiegen wird: Der Heap funktioniert dort wie der Stack in C(++): Zum Allokieren wird einfach ein eine Art Framepointer verschoben. Dadurch geht das Allokieren rasend schnell. Der Garbage Collector sucht dann einfach die Objekte, auf die keine Referenz mehr zeigt, entfernt diese und schiebt den Rest wieder zusammen.
OK, damit bin ich wohl enttarnt, ich bin der Gast aus dem VS.NET unter Win98-Thread ^_^ Der gute David hat mich inzwischen freigeschaltet.