30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

12.3 Speicherverwaltung 391<br />

d e s t r u c t o r of SimpleObject<br />

d e s t r u c t o r of SimpleObject<br />

g l o b a l d e l e t e [ ] c a l l e d with base : 0 x804b2f0<br />

c r e a t i n g MyMemoryManagedObject<br />

new o f MemoryManagedObject c a l l e d with s i z e 12<br />

g l o b a l new c a l l e d with s i z e 12<br />

constructor of MemoryManagedObject<br />

constructor of MyMemoryManagedObject<br />

d e l e t i n g MyMemoryManagedObject . . .<br />

d e s t r u c t o r of MyMemoryManagedObject<br />

d e s t r u c t o r of MemoryManagedObject<br />

d e l e t e o f MemoryManagedObject c a l l e d with base : 0 x804b2f0<br />

g l o b a l d e l e t e c a l l e d with base : 0 x804b2f0<br />

c r e a t i n g MyMemoryManagedObject array . . .<br />

new [ ] of MemoryManagedObject c a l l e d with s i z e 40<br />

g l o b a l new [ ] c a l l e d with s i z e 40<br />

constructor of MemoryManagedObject<br />

constructor of MyMemoryManagedObject<br />

constructor of MemoryManagedObject<br />

constructor of MyMemoryManagedObject<br />

constructor of MemoryManagedObject<br />

constructor of MyMemoryManagedObject<br />

d e l e t i n g MyMemoryManagedObject array . . .<br />

d e s t r u c t o r of MyMemoryManagedObject<br />

d e s t r u c t o r of MemoryManagedObject<br />

d e s t r u c t o r of MyMemoryManagedObject<br />

d e s t r u c t o r of MemoryManagedObject<br />

d e s t r u c t o r of MyMemoryManagedObject<br />

d e s t r u c t o r of MemoryManagedObject<br />

d e l e t e [ ] of MemoryManagedObject c a l l e d with base : 0 x804b2f0<br />

g l o b a l d e l e t e [ ] c a l l e d with base : 0 x804b2f0<br />

12.3.6 Weitere Aspekte der eigenen Speicherverwaltung<br />

Um die Abhandlung über die handgestrickte Speicherverwaltung abzurunden,<br />

möchte ich hier noch kurz auf e<strong>in</strong> paar kle<strong>in</strong>e Aspekte e<strong>in</strong>gehen, die <strong>in</strong> der<br />

Praxis Relevanz besitzen.<br />

Vererbung von new und delete. Es ist natürlich nicht nur möglich, die<br />

new und delete Operatoren e<strong>in</strong>fach e<strong>in</strong>mal mittels Overload<strong>in</strong>g für <strong>in</strong>dividuelle<br />

Klassen zu implementieren und diese Implementation zu vererben. Auch<br />

hier gelten die üblichen Regeln für das Overrid<strong>in</strong>g. Sollte man also von e<strong>in</strong>er<br />

Basisklasse ableiten, die <strong>in</strong>dividuelle Speicherverwaltung macht, und sollte<br />

man weiters mit diesem Verhalten nicht zufrieden se<strong>in</strong>, so kann man <strong>in</strong> der<br />

Ableitung selbst e<strong>in</strong> Overrid<strong>in</strong>g vornehmen und damit die Operatoren aus<br />

der Basisklasse außer Kraft setzen. Im folgenden Beispiel ist dies kurz demonstriert<br />

(new_delete_overrid<strong>in</strong>g.cpp):<br />

1 // n e w d e l e t e o v e r r i d i n g . cpp − a demo f o r o v e r r i d i n g<br />

2 // i n d i v i d u a l new and d e l e t e operators <strong>in</strong> s u b c l a s s e s<br />

3<br />

4 #<strong>in</strong>clude <br />

5 #<strong>in</strong>clude <br />

6 #<strong>in</strong>clude <br />

7 #<strong>in</strong>clude < c s t d l i b><br />

8 #<strong>in</strong>clude ” u s e r t y p e s . h”<br />

9

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!