Breymann. C++ Einführung und professionelle Programmierung

Breymann. C++ Einführung und professionelle Programmierung Breymann. C++ Einführung und professionelle Programmierung

vred.bioinf.uni.sb.de
von vred.bioinf.uni.sb.de Mehr von diesem Publisher
17.11.2014 Aufrufe

6 Intermezzo: Zeiger 205 6.1 Zeiger und Adressen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 6.2 C-Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 6.2.1 C-Arrays und sizeof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 6.2.2 Indexoperator bei C-Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 6.2.3 Initialisierung von C-Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 6.3 C-Zeichenketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 6.4 Dynamische Datenobjekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 6.4.1 Freigeben dynamischer Objekte . . . . . . . . . . . . . . . . . . . . . . . . . 233 6.5 Mehrdimensionale C-Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 6.5.1 Statische mehrdimensionale C-Arrays . . . . . . . . . . . . . . . . . . . . . . 237 6.5.2 Dynamisch erzeugte mehrdimensionale Arrays . . . . . . . . . . . . . . . . 247 6.6 Binäre Ein-/Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 6.7 Zeiger und Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 6.7.1 Parameterübergabe mit Zeigern . . . . . . . . . . . . . . . . . . . . . . . . . 256 6.7.2 Gefahren bei der Rückgabe von Zeigern . . . . . . . . . . . . . . . . . . . . . 259 6.8 Zeiger auf Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 6.9 this-Zeiger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 7 Objektorientierung 2 267 7.1 Eine String-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 7.1.1 friend-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 7.2 Klassenspezifische Daten und Funktionen . . . . . . . . . . . . . . . . . . . . . . . . 274 7.2.1 Klassenspezifische Konstante . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 7.3 Klassentemplates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 7.3.1 Ein Stack-Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Breymann C++, c○ Hanser Verlag München Inhalt ◭◭ ◭ ◮ ◮◮ 6 zurück Ende

7.3.2 Stack mit statisch festgelegter Größe . . . . . . . . . . . . . . . . . . . . . . . 293 8 Vererbung 297 8.1 Vererbung und Initialisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 8.2 Zugriffsschutz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 8.3 Code-Wiederverwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 8.4 Überschreiben von Funktionen in abgeleiteten Klassen . . . . . . . . . . . . . . . . 315 8.5 Polymorphismus in abgeleiteten Klassen . . . . . . . . . . . . . . . . . . . . . . . . 318 8.5.1 Virtuelle Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 8.5.2 Abstrakte Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 8.5.3 Virtuelle Destruktoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 8.6 Mehrfachvererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 8.6.1 Namenskonflikte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 8.6.2 Virtuelle Basisklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 8.6.3 Virtuelle Basisklassen und Initialisierung . . . . . . . . . . . . . . . . . . . . 352 8.7 Vererbung und andere Beziehungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 8.7.1 Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 8.7.2 Der Teil und das Ganze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 8.7.3 Assoziation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 8.7.4 „Benutzt“-Beziehung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 9 Überladen von Operatoren 367 9.1 Rationale Zahlen - noch einmal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 9.1.1 Arithmetische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 9.1.2 Ausgabeoperator

7.3.2 Stack mit statisch festgelegter Größe . . . . . . . . . . . . . . . . . . . . . . . 293<br />

8 Vererbung 297<br />

8.1 Vererbung <strong>und</strong> Initialisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307<br />

8.2 Zugriffsschutz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308<br />

8.3 Code-Wiederverwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313<br />

8.4 Überschreiben von Funktionen in abgeleiteten Klassen . . . . . . . . . . . . . . . . 315<br />

8.5 Polymorphismus in abgeleiteten Klassen . . . . . . . . . . . . . . . . . . . . . . . . 318<br />

8.5.1 Virtuelle Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319<br />

8.5.2 Abstrakte Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326<br />

8.5.3 Virtuelle Destruktoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337<br />

8.6 Mehrfachvererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341<br />

8.6.1 Namenskonflikte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346<br />

8.6.2 Virtuelle Basisklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349<br />

8.6.3 Virtuelle Basisklassen <strong>und</strong> Initialisierung . . . . . . . . . . . . . . . . . . . . 352<br />

8.7 Vererbung <strong>und</strong> andere Beziehungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 357<br />

8.7.1 Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357<br />

8.7.2 Der Teil <strong>und</strong> das Ganze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362<br />

8.7.3 Assoziation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363<br />

8.7.4 „Benutzt“-Beziehung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366<br />

9 Überladen von Operatoren 367<br />

9.1 Rationale Zahlen - noch einmal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371<br />

9.1.1 Arithmetische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371<br />

9.1.2 Ausgabeoperator

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!