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.

134 6. Po<strong>in</strong>ter und References<br />

dah<strong>in</strong>ter versteckt, dann kann man auch nicht rechnen. Entsprechend wird<br />

sich der Compiler bei e<strong>in</strong>em Versuch der Anwendung von Po<strong>in</strong>terarithmetik<br />

oder Indizierung auf e<strong>in</strong>en void * beschweren. Ebenso verhält es sich mit<br />

delete: Es ist nicht auf e<strong>in</strong>en void * aufrufbar. Die Gründe dafür werden<br />

<strong>in</strong> Abschnitt 10.2.3 noch kurz erläutert.<br />

Vorsicht Falle: Das Spielchen mit dem Erzw<strong>in</strong>gen der Neu<strong>in</strong>terpretation<br />

mittels re<strong>in</strong>terpret_cast kann man nicht nur bei Po<strong>in</strong>tern spielen, sondern<br />

sogar unglückseligerweise zwischen Po<strong>in</strong>tern und Ganzzahlentypen. Ist im<br />

Pr<strong>in</strong>zip auch irgendwie logisch, denn e<strong>in</strong>e Adresse ist ja auch nur irgende<strong>in</strong>e<br />

Ganzzahl. Nur leider funktioniert das mit dem Cast zwischen z.B. <strong>in</strong>t<br />

und Po<strong>in</strong>tern nicht so toll, denn wer garantiert uns, dass e<strong>in</strong> <strong>in</strong>t auf e<strong>in</strong>er<br />

bestimmten Plattform gleich lang ist, wie e<strong>in</strong> Po<strong>in</strong>ter? Leider gibt es immer<br />

noch ziemlich viel (zumeist historische) Software, die diese Annahme e<strong>in</strong>fach<br />

als gegeben h<strong>in</strong>nimmt. Allerd<strong>in</strong>gs ist das grundfalsch!<br />

Deshalb ist es unbed<strong>in</strong>gt notwendig, folgende Regel e<strong>in</strong>zuhalten: Es darf<br />

niemals zwischen e<strong>in</strong>em Po<strong>in</strong>ter und e<strong>in</strong>em, wie auch immer gearteten<br />

Ganzzahldatentyp, z.B. <strong>in</strong>t gecastet werden! Dies ergibt nämlich<br />

unter Garantie Software mit e<strong>in</strong>er wunderbar e<strong>in</strong>programmierten Zeitbombe.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!