002
10.12.2006, 15:58 Uhr
ao
(Operator)
|
Also, das erste und das dritte erzeugen ein Objekt vom Typ Foo. bar ist dabei irgendwas, was hilft, den Foo zu konstruieren.
Im ersten Fall ist foo ein "automatisches" Objekt, das so lange lebt, bis das Programm den Scope, in dem das Objekt erzeugt wurde, verlässt (Scope ist der Bereich zwischen { und }). Beim Verlassen des Scope wird foo automatisch zerstört. Automatische Objekte liegen in der Regel auf dem Stack; das muss nicht so sein, ist aber meist die günstigste Lösung.
Im dritten Fall befindet sich das Objekt auf dem Heap (globale Speicherreserve) und wird über den Pointer foo festgehalten. Es lebt, bis es durch
zerstört wird. Vergisst man das, hat man ein Speicherleck.
Im zweiten Fall wird keine Foo-Instanz erzeugt. foo ist lediglich ein Pointer auf Foo, der mit dem Wert bar initialisiert wird; bar muss also ebenfalls vom Typ Foo* sein.
Klarer?
ao |