30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

12.3 Speicherverwaltung 367<br />

zurückzukehren: Overload<strong>in</strong>g von new und delete. Sehen wir uns dazu die<br />

Deklaration der Klasse FastAccessibleObject an:<br />

46 class FastAccessibleObject<br />

47 {<br />

48 public :<br />

49 void ∗ operator new( s i z e t s i z e )<br />

50 throw( b a d a l l o c ) ;<br />

51 void operator delete ( void ∗ base ptr )<br />

52 throw ( ) ;<br />

53<br />

54 FastAccessibleObject ( ) { }<br />

55<br />

56 virtual ˜ FastAccessibleObject ( ) { }<br />

57 } ;<br />

In den Zeilen 49–50 sehen wir, wie e<strong>in</strong> new Operator def<strong>in</strong>iert ist: Es wird e<strong>in</strong><br />

Parameter übergeben, der die Größe des benötigten Speicherblocks <strong>in</strong> Bytes<br />

angibt. Der erwartete return-Value ist dann der Base-Po<strong>in</strong>ter des allokierten<br />

Speicherblocks. Im Falle, dass etwas schief geht, muss e<strong>in</strong>e bad_alloc<br />

Exception geworfen werden. In den Zeilen 51–52 sehen wir, wie e<strong>in</strong> delete<br />

Operator def<strong>in</strong>iert ist: Es wird e<strong>in</strong>fach der Base-Po<strong>in</strong>ter des freizugebenden<br />

Speicherblocks übergeben. Die Implementation dieser beiden Operatoren<br />

liest sich dann folgendermaßen:<br />

138 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

139 /∗<br />

140 ∗/<br />

141 void ∗ FastAccessibleObject : : operator new( s i z e t s i z e )<br />

142 throw( b a d a l l o c )<br />

143 {<br />

144 cout

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!