Basics
-
Hallo zusammen...
2 Fragen:
Kann ich in einem Konstruktor ne Exception schmeissen oder wird da
Speicher alloziiert, der nicht mehr freigegeben wird?Kann ich auf einem Object das 0 ist immer delete aufrufen oder muss
ich da Seiteneffekte erwarten?Beispiel:
Test * t = 0; try{ t = new Test(); //hier kann ne Exception geworfen werden... } catch(...){ } delete t;
Ich weiß, dass ich hier das delete auch in den try-Block packen könnte...
CSpille
-
CSpille schrieb:
2 Fragen:
Kann ich in einem Konstruktor ne Exception schmeissen oder wird da
Speicher alloziiert, der nicht mehr freigegeben wird?Wenn ein Ctor eine Exception schmeißt garantiert der C++ Standard, dass Speicher für nicht konstruierte Objekte automatisch freigegeben wird.
Den try-catch-Block brauchst du also hier nicht. Wenn du allerdings Ressourcen im Ctor selbst anlegst, musst du die natürlich selbst freigeben.CSpille schrieb:
Kann ich auf einem Object das 0 ist immer delete aufrufen oder muss
ich da Seiteneffekte erwarten?delete auf einem Nullpointer ist als noop garantiert und damit frei von Seiteneffekten.
-
Cool, danke...
Den try-catch-Block hab ich, weil ich nen QSocket aufmachen will und wenn
es misslingt, soll er nicht starten ...