Seite 1 von 1

Klassenvariablen & Zeiger: Wie wird mit ihnen umgegangen

Verfasst: 3. September 2005 14:50
von kowi1134
Hallo!

Meine Frage zeugt vielleicht von relativ wenig C++ Kenntnis, aber dennoch werde ich sie stellen.

Wenn ich eine Klasse in Qt4 habe, die z.B. so aussieht:

Code: Alles auswählen

class Menu : public QMenuBar
{
public:
    Menu( QWidget * parent = NULL );
private:
    QMenu *fileMenu;
    QAction *newAct;
};

Menu::Menu( QWidget * parent ) : QMenuBar( parent )
{
    newAct = new QAction( tr("&New"), this );
    fileMenu = addMenu( tr("&File") );
    fileMenu->addAction( newAct );
}
dann sind fileMenu und newAct ja Zeiger. In all den Qt4 Examples, die mitgeliefert werden, finde ich eine derartige Vorgehensweise, die mich noch stutzig macht, denn:

:arrow: Braucht man keinen Destruktor, der das Löschen der Zeiger newAct und fileMenu übernimmt? Entstehen hierdurch Speicherleichen?

Ciao
Konrad

Verfasst: 3. September 2005 15:35
von BartSimpson
Das kommt auf die Klassen an. Wenn du Qt eigene Objekte nutzt, haben die meisten Eltern. Denn kümmet sich Qt um das abräumen. Wenn du dir selber eine Klasse baust, die kein Qt Objekt als Eltenr hat, dann must du sich selber drumm kümmern.

Verfasst: 3. September 2005 16:01
von kowi1134
Ok, Danke!

Verfasst: 3. September 2005 16:59
von BartSimpson
wenn du was falsch löscht ->coredump/rotes Fenster
Wenn es vergessen worde ist zu initialiseiren->coredump/rotes Fenster
sonst kann es nur eine Speicherleiche geben.