ChrisB: Stack und Heap

Beitrag lesen

Hi,

Wenn ich mit Qt und C++ programmiere, muss ich das ja notgedrungen objektorientiert machen. Wenn ich also eine Klasse ChatDialog in chatdialog.h anlege und darin ein paar Variablen deklariere, kann ich das ja statisch machen (bspw. QLabel label;) oder dynamisch (Qlabel *label).

Was bitte soll der Unterschied, ob es sich um eine Eigenschaft vom Typ QLabel, oder um einen Pointer auf QLabel handelt, denn bitte mit statisch oder nicht statisch zu tun haben?

Meinst du überhaupt statisch im OO-Sinne, also static?

Da der Stack nach der Ausführung der Funktion/Methode wieder automatisch bereinigt wird, werden statische Objekte also automatisch zerstört, wenn die Funktion bzw. Methode beendet ist.

Ja.

Was bedeutet das denn.

Was verstehst du denn daran nicht?

Heißt das, dass ich ein statisch deklariertes Label, dass ich dann im Konstruktor implementiere, nach der Ausführung des Konstruktors gelöscht wird?

Statisch, „Label“ ... ich glaube, du solltest erst mal die Begrifflichkeiten lernen, die in diesem Umfeld üblich sind - sonst können wir uns hier kaum vernünftig darüber unterhalten.

Wenn du lediglich einen Pointer auf ein Datenobjekt in deiner Klasse ablegst - dann stirbt nur der Pointer, wenn deine Klassen-Instanz weggeräumt wird.
Der Speicherplatz, der reserviert wurde, als du das Objekt angelegt hast, auf das dieser Pointer verweist, wird dadurch aber nicht freigegeben - dafür hast du selber zu sorgen.
Dafür gibt es in C++ den delete-Operator.

MfG ChrisB

--
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]