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.

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

gewaltigen Laufzeit-Overhead, denn es muss ja der gesamte Inhalt der struct<br />

kopiert werden und das kann e<strong>in</strong>e ganze Menge se<strong>in</strong>. Selbiges gilt für den<br />

return-Wert. Es ist also auch <strong>in</strong> diesem Fall sehr s<strong>in</strong>nvoll, e<strong>in</strong>fach über e<strong>in</strong>e<br />

Adresse Bezug auf das Orig<strong>in</strong>al zu nehmen.<br />

All das, was ich hier gerade angeführt habe, macht man <strong>in</strong> C mit Po<strong>in</strong>tern<br />

“per Hand”. In C ++ hat man aus mehreren Gründen, die uns z.T. im OO-Teil<br />

noch begegnen werden, den expliziten Po<strong>in</strong>tern e<strong>in</strong> weiteres Konstrukt zur<br />

Seite gestellt, die sogenannten References. Diese stellen, wenn man so will,<br />

implizite Po<strong>in</strong>ter dar, bei denen man sich nicht als Entwickler selbst um die<br />

Dereferenzierung bei der Zuweisung kümmern muss. Diese passiert versteckt<br />

h<strong>in</strong>ter den Kulissen. Auch gibt es bei References ke<strong>in</strong>e Po<strong>in</strong>terarithmetik.<br />

Genehmigen wir uns zum E<strong>in</strong>stieg e<strong>in</strong> erstes kle<strong>in</strong>es Beispiel, das die Verwendung<br />

von References demonstriert (first_reference_demo.cpp):<br />

1 // f i r s t r e f e r e n c e d e m o . cpp − demo o f r e f e r e n c e s <strong>in</strong> <strong>C++</strong><br />

2<br />

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

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

5<br />

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

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

8<br />

9 void changeVariable ( <strong>in</strong>t32 &var ) ;<br />

10<br />

11 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

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

13 {<br />

14 <strong>in</strong>t32 my var = 12;<br />

15 <strong>in</strong>t32 &my ref = my var ;<br />

16<br />

17 // my var and my ref r e f e r to the same <strong>in</strong>t32 <strong>in</strong> memory<br />

18 // t h e r e f o r e they share the same value . . .<br />

19 cout

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!