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.

94 5. Funktionen<br />

• Das genaue Verstehen der Interna und der Zusammenhänge der e<strong>in</strong>zelnen<br />

Datentypen ist e<strong>in</strong>e der wichtigsten Voraussetzungen für e<strong>in</strong>e saubere<br />

Entwicklung! Viele Entwickler, nicht nur Neul<strong>in</strong>ge, haben hier e<strong>in</strong> großes<br />

Wissensdefizit, weil sie die Interna als “unnötigen Ballast” betrachten, den<br />

man “heutzutage sowieso nicht mehr braucht”. Diese E<strong>in</strong>stellung ist grundfalsch!<br />

• Niemals das Overload<strong>in</strong>g übertreiben! Im Fall unserer show Funktion wäre<br />

es klug gewesen, e<strong>in</strong>e Variante mit <strong>in</strong>t64 und e<strong>in</strong>e mit long double zu<br />

schreiben. Damit hat man für Gleitkomma und Integer Typen immer den<br />

mächtigsten Datentyp zur Verfügung und der Compiler hat ke<strong>in</strong>e Probleme<br />

mehr.<br />

• Das Mischen von Overload<strong>in</strong>g und default Parametern ist nach Möglichkeit<br />

zu vermeiden, denn es kann sehr leicht unbeabsichtigte Ambiguitäten und/oder<br />

unsauberen Code zur Folge haben. E<strong>in</strong> Beispiel für solchen schlechten<br />

Programmierstil ist auch <strong>in</strong> unserem Demoprogramm zu f<strong>in</strong>den, denn es<br />

gibt e<strong>in</strong>e show Funktion mit e<strong>in</strong>em double Parameter und e<strong>in</strong>e zweite mit<br />

e<strong>in</strong>em float und e<strong>in</strong>em zusätzlichen default Parameter. Stattdessen wäre<br />

e<strong>in</strong>e e<strong>in</strong>zige Funktion mit e<strong>in</strong>em long double und zusätzlichem default<br />

Parameter sehr viel besser gewesen!<br />

Vorsicht Falle: Ja, gleich noch e<strong>in</strong>e. Der Deklaration von Funktionen<br />

kommt durch das Overload<strong>in</strong>g <strong>in</strong> C ++ e<strong>in</strong>e unglaublich wichtige Rolle zu, weil<br />

erst dadurch der Compiler alle Alternativen kennt. Welche tollen Effekte<br />

das Vergessen e<strong>in</strong>er e<strong>in</strong>zigen Deklaration hervorrufen kann, sieht man an<br />

folgendem Programm (miss<strong>in</strong>g_decl_problem.cpp):<br />

1 // miss<strong>in</strong>g decl problem . cpp − demo o f a problem that a r i s e s when<br />

2 // a function d e c l a r a t i o n i s miss<strong>in</strong>g<br />

3<br />

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

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

6<br />

7 us<strong>in</strong>g std : : cout ;<br />

8 us<strong>in</strong>g std : : endl ;<br />

9<br />

10 // function d e c l a r a t i o n s<br />

11 void show ( <strong>in</strong>t16 num) ;<br />

12<br />

13 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

14 <strong>in</strong>t ma<strong>in</strong> ( <strong>in</strong>t argc , char ∗ argv [ ] )<br />

15 {<br />

16 show ( 1 2 3 4 5 6 7 . 5 ) ; // here the c a l l to show ( <strong>in</strong>t16 ) i s taken ! ! ! !<br />

17 return ( 0 ) ;<br />

18 }<br />

19<br />

20 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

21 void show ( <strong>in</strong>t16 num)<br />

22 {<br />

23 cout

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!