Klassenvariablen & Zeiger: Wie wird mit ihnen umgegangen

Alles rund um die Programmierung mit Qt
Antworten
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Klassenvariablen & Zeiger: Wie wird mit ihnen umgegangen

Beitrag 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
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag von kowi1134 »

Ok, Danke!
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
Antworten