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.

13.5 Explizite Spezialisierungen 437<br />

ContentType * gewählt. Das bedeutet, dass der Compiler bis zum * beim<br />

Aussuchen e<strong>in</strong>er Ausprägung e<strong>in</strong> Match<strong>in</strong>g vornehmen kann, wodurch alle<br />

Po<strong>in</strong>ter Typen geme<strong>in</strong>sam erfasst werden. E<strong>in</strong>em Blick auf Zeile 17 entnehmen<br />

wir allerd<strong>in</strong>gs, dass wir damit alle<strong>in</strong> noch nicht wirklich e<strong>in</strong>e Reduktion<br />

des erzeugten Source Codes erreicht haben. Die Parametrisierung auf e<strong>in</strong>zelne<br />

Typen (<strong>in</strong> unserem Fall Po<strong>in</strong>ter-Typen) existiert ja nach wie vor. Also<br />

wird der Compiler auch nach wie vor für jeden e<strong>in</strong>zelnen Po<strong>in</strong>ter-Typ e<strong>in</strong>e<br />

konkrete Ausprägung erzeugen. Was soll dann das Ganze nun überhaupt?<br />

Genau hier kommt des Pudels Kern Teil zwei <strong>in</strong>s Spiel: In Zeile 18 sieht<br />

man, dass unsere Spezialisierung von e<strong>in</strong>er konkreten Ausprägung des Buffers,<br />

nämlich von e<strong>in</strong>em Buffer, abgeleitet ist. Egal also, mit welchem<br />

Typ von Po<strong>in</strong>ter wir es zu tun haben, dieser Buffer ist schon<br />

konkret und damit gibt es zum<strong>in</strong>dest von ihm ke<strong>in</strong>e neuen Ausprägungen.<br />

Wir brauchen also nur noch unsere Methoden so zu implementieren, dass sie<br />

diejenigen des Buffer aufrufen und schon haben wir, was wir wollen.<br />

Also schreiten wir zur Tat und tun das. Das Ergebnis sieht dann so aus:<br />

48 template <br />

49 Buffer:: Buffer ( )<br />

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

51 {<br />

52 cout

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!