1 Ί Der C++-Standarä Die nötigen Werkzeuge für C Übersetzen mit einer Entwicklungsumgebung... 22

Ähnliche Dokumente
Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden. ffl mitp

Objektorientiert in C++

C++ PROGRAM- MIERER/-IN

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

Vorwort zur zweiten Auflage 1. Vorwort zur ersten Auflage 2

Arnold Willemer. Einstieg in C++ Galileo Press

Einleitung Grundlagen 23

Kapitel 2 Elementare Datentypen, Konstanten und Variablen Elementare Datentypen

Inhalt. Vorwort Erste Grundlagen... 15

Jürgen Wolf. C++ von A bis Z. Das umfassende Handbuch. Galileo Press

Vorwort. Teil I: Grundkurs 1. 1 Keine Angst vor C++! 3

... Vorwort Einstieg in die Programmierung Ablaufsteuerung... 71

Dirk Louis. c++ Das komplette Starterkit für den einfachen Einstieg in die Programmierung. 2. Auflage HANSER

Arnold Willemer C++ Der Einstieg. WlLEY

Arnold Willemer. Einstieg in C++ Galileo Press

Visual C#.NET. Bearbeitet von Patrick A. Lorenz

2.1 Visual C Express installieren Visual C Express starten Visual C Express registrieren...

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?

Programmieren in C+ Einführung in den Sprachstandard C++ Springer-Verlag Berlin Heidelberg New York London Paris Tokyo Hong Kong Barcelona Budapest

Werner Achte rt DATA BECKER

Berichte aus der Informatik. Dieter Pawelczak. Start in die C-Programmierung

Das erwartet dich in diesem Buch 8. Kapitel 1 Aufbruch ins Programmierabenteuer 14

Objektorientiertes Programmieren in C++

in 21 Tagen Jesse Liberty Der optimale Weg - {Schritt für Schritt zum Programmierprofi

Inhaltsverzeichnis. Vorwort

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Die С ++-Programmiersprache

Objektorientierte Programmierung mite**

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

~±] Inhalt. 1.1 Ähnlichkeiten zwischen C# und Java Unterschiede zwischen C# und Java Das.NET-Framework 4 1.

C programmieren. Jürgen Wolf

Java-Grundkurs für Wirtschaftsinformatiker

Walter Saumweber C++ Programmierhandbuch. ntwickier.press

Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden. mitp

Jürgen Wolf. C++ von A bis Z. Das umfassende Handbuch. Galileo Press

Die C++-Programmiersprache

C/C++ KOMPENDIUM Einführung Arbeitsbuch Nachschlagewerk

Jürgen Wolf. c++ Das umfassende Handbuch. Galileo Press

Einführung in die Programmierung mit C++

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker

Gliederung der Folien

Java-Grundkurs für rtschaftsinformatiker

André Willms, C++: Eine kompakte Einführung, dpunkt.verlag, ISBN D3kjd3Di38lk323nnm

Das erwartet dich in diesem Buch 8. Kapitel 1 Aufbruch ins Programmierabenteuer 14

Inhaltsverzeichnis. 4.9 Aufgaben... 63

Vorlesungsprüfung Programmiersprache 1

Thomas Binzinger. Jetzt lerne ich. Delphi. Markt+Technik Verlag

Alexander Niemann. Das Einsteigerseminar" < Objektorientierte ^ Programmierung in Java. bhv. i.-

Inhaltsverzeichnis. Inhalt. Bemerkung... 9 Vorwort Programme und Programmiersprachen

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

Das Einsteigerseminar Objektorientierte Programmierung in Java

Informatik für Ingenieure

Inhaltsverzeichnis. Vorwort.11

Inhaltsverzeichnis 1 Der objektorientierte Ansatz 2 Elementare Objekte und Ausdrücke

Programmierung in C/C++

Eine praktische Einführung in die Programmierung mit der Programmiersprache C

С als erste Programmiersprache

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

Grundkurs Software- Entwicklung mit C++

Über den Autor 9 Widmung 10. Einführung 23

Bernd ШШ^^ШШШШ. ШШшШШШШ. Das KBasic Buch. Handbuch zum Entwickeln von KBasic-Anwendungen. Für Windows, Mac und Linux

C++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

Programmieren in Lua

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

ISO-SiMMlarcl. als erste Programmiersprache. Von Prof. Dr. Joachim Goll Uwe Grüner Prof. Herbert Wiese 2., durchgesehene Auflage

Objektorientierte Programmierung in Java

jetzt lerne ich C++ Das komplette Starterkit für den einfachen Einstieg in die Programmierung

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Programmieren in C++ Überladen von Methoden und Operatoren

Java als erste Programmiersprache

Praktische Eine Einführung

Michael Van Canneyt Florian Klämpfl. Free Pascal

Praxis der Programmierung

Funktionales C++ zum Ersten

Inhaltsverzeichnis I Grundlagen...1 II Programmieren in C/C

Themen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren

Praxis der Programmierung

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.

JavaScript O'REILLY. Das umfassende Referenzwerk. Deutsche Übersetzung von Ralf Kuhnert, Gisbert W. Selke & Harald Selke

Inhaltsverzeichnis. Teil I Einführung in die C++-Programmierung 25. Einführung 19. Kapitel 1 Ihr erstes C++-Programm 27

Prof. W. Henrich Seite 1

1 Einige Grundbegriffe Einführung in die Programmierung Ausgewählte Sprachelemente von C Arithmetik...

Inhaltsverzeichnis. 1 Grundlagen 1. 2 Einfache Programme 21

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Vorbemerkung 3. Aufbau des Buches 3. Teil 1 Einführung in C# 11

10.4 Konstante Objekte

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

Objektorientierte Programmierung II

Martin Unold INFORMATIK. Geoinformatik und Vermessung

C++für Naturwissenschaftler

Ulrich Kaiser Christoph Kecher C/C++ Von den Grundlagen zur professionellen Programmierung. в.. Galileo Computing

Repetitorium Programmieren I + II

Programmieren lernen mit Perl

C für Java-Programmierer

7. Übung Informatik II - Objektorientierte Programmierung

C++ Klassen weitere Funktionen

Transkript:

Inhalt 1 Einstieg n die Welt von c++ 18 1 Ί Der C++-Standarä... 18 1.2 Die nötigen Werkzeuge für C + +... 19 1.3 Übersetzen mit einer Entwicklungsumgebung... 22 1.4 Übersetzen mit g H und c la n g H... 26 1.5 Listings zum Buch... 28 1.6 Kontrollfragen und Aufgaben im Buch... 28 1.7 Aufgabe... 28 2 Erste Schritte ín C++ 30 2.1 Das erste Programm ỉn C++... 30 2.2 Anweisungen und Ausdrücke... 32 2.2.1 Anweisungen... 32 2.2.2 A usdrücke... 33 2.3 Die Standard-Eingabe- und -Ausgabestreams... 34 2.3.1 Die Streams von C + +... 34 2.3.2 Ausgabe m it >>std :c o u t«... 35 2.3.3 Ausgabe m it >>std :cerr«oder»std :dog<<... 35 2.3.4 Eingabe m it >>std :cin«... 36 2.4 Einige Symbole von C ++... 37 2.4.1 Bezeichner... 38 2.4.2 Literale... 38 2.4.3 K om m entare... 42 2.5 Kontrollfragen und Aufgaben... 43

3 Die eingebauten C++-Basisdatentypen 44 3.1 Variablen... 44 3.2 Deklaration und Definition von Variablen... 45 3.3 lnrtialisie ung und Zuweisung von Werten 46 3.4 Ganzzahltypen... 47 3.5 Datentyp für Zeichen... 51 3.6 Internationale Zeichen... 55 3.6.1 Unicode m it C++... 55 3.6.2 Die Unicode-Typen» c h a rie j«und»char32_t«... 56 3.6.3 Breite Zeichen -»wchar t «... 58 3.7 Fließkommazahlentypen... 59 3.8 Umits für die Basisdatentypen... 61 3.9 Die Byte-Große mit dem»sizeof«-operator...... 63 3.10 Sicherheit beim Kompilieren mit»statkjssert«... 63 3.11 >>auto«-typ... 65 3.12 Konstanten... 66 3.13 Kontrollfragen und Aufgaben... 67 4 Arbeiten mit den eingebauten Typen 68 4.1 Arithmetische Operatoren... 68 4.2 Erweiterte Darstellung arithmetischer Operatoren... 72 4.3 Inkrement- und Dekrementoperator... 72 4.4 Ungenaue Fließkommazahlen... 75 4.5 Typumwandlung... 77

4.5.1 Implizite Umwandlung durch den Compiler... 77 4.5.2 Automatische Typumwandlung 80 4.5.3 Explizite Typumwandlung... 81 4.6 Kontrollfragen und Aufgaben... 84 5 Kontrollstrukturen 85 5.1 Anweisungsblock für Kontrollstrukturen... 85 5.2 Der eingebaute Datentyp 87 5.3 Bedingte Anweisung mit»if«... 88 5.4 Vergleichsoperatoren... 92 5.5 Alternative»else«-Verzweigung... 93 5.6 Mehrfache Verzweigung... 95 5.7 Der Bedingungsoperator»?:«... 98 5.8 Logische Operatoren... 100 5.9 Die Fallunterscheidung-»»switch«... 103 5.10 Die kopfgesteuerte»while«-schleife... 1 〇 6 5.11 Die fußgesteuerte»do while«-schleife 109 5.12 Die Zählschleife»for«... 112 5.13 Kontrollierte Sprunganweisungen... 116 5.13.1 Die >>b٢eak«-anwe sung... 116 5.13.2 Die»continue«-Anweisung... 117 5.14 Kontrollfragen und Aufgaben... 119 6 Arrays und Strings 120 6.1 Arrays 120

6.1.1 Der C++-Containe٢ >)std::vector<< 121 6.1.2 C-Arrays... 126 6.2 Strings verwenden... 131 6.2.1 Der C++-Container»std :string«... 131 6.2.2 Unterstützung von U nicode... 133 6.2.3 C-Zeichenketten... 134 6.3 Kontrollfragen und Aufgaben... 136 7 Referenzen und Zeiger 138 7.1 Referenzen... 138 7.2 Zeiger... 141 7.2.1 Syntax von Zeigern... 142 7.2.2 Adresse m Zeiger speichern... 143 7.2.3 Zeiger dereferenzieren... 145 7.2.4 Zeiger p rü fe n... 147 7.3 Kontrollfragen und Aufgaben... 148 8 Funktionen 150 8.1 Grundlage zu den Funktionen... 150 8.1.1 Funktionen definieren... 150 8.1.2 Funktionen aufrufen... 151 8.1.3 Funktionendeklarieren... 152 8.1.4 Funktionsparameter (Call-by-Value)... 154 8.1.5 Konstante Funktionsparameter 156 8.1.6 Standardparam eter... 156 8.1.7 Rückgabewert von Funktionen... 159 8.1.8 Funktionen überladen... 161

8.1.9 Gültigkeitsbereich von lokalen und globalen V ariablen... 163 8.1.10 Die >>main()«-funktion... 165 8.1.11 Program m ende... 167 8.2 Referenzen als Parameter und 168 8.2.1 Referenzen als Parameter... 168 8.2.2 Referenzen als Rückgabe... 172 8.3 Zeiger als Paramete und Rückgabewert 173 8.3.1 Referenzen VS. Zeiger als Parameter... 174 8.4 Größere Daten als Funktionsparameter... 175 8.5 C-Arrays oder C-Strings als Funktionsparameter... 177 8.6 Kontrollfragen und Aufgaben... 178 9 Präprozessor-Direktiven und Modularisierung 181 9.1 Praprozessor-Direktiveii... 181 9.1.1 Die»#include«-Direktive 182 9.1.2 Die»#define«-Direktive... 184 9.1.3 Bedingte Kompilierung... 185 9.2 N am ensräum e... 187 9.2.1 Neuen Namensberejch deklarieren 187 9.2.2 Namensberelchverschachteln... 190 9.2.3 Namensbereich ist ein eigener G ültigkeitsbereich... 190 9.2.4 Namensbereich m it»using«importieren........ 193 9.2.5 Enzelne Bezeichner»using«importieren... 195 9.2.6 Aliasse für Namensbereiche... 195 9.2.7 Anonymer N am ensraum... 196 9.2.8 Namensraum» std«... 196 9.3 Speicherklassenattribute... 198

9.3.1 Schlüsselwort»extern«... 198 9.3.2 Schlüsselwort»static«... 199 9.4 Typqualifikatoren... 201 9.5 Modularisierung... 202 9.5.1 Aufteilung... 204 9.5.2 Die öffentliche Schnittstelle (Headerdatei)... 205 9.53 Private Datei(en)... 206 9.5.4 Die C lient-d ate... 207 9.5.5 A ufgabe... 208 9.5.6 Nur Objektcode oder Bibliothek vorhanden... 209 9.6 Kontrollfragen und Aufgaben... 209 10 Dynamische Speicherobjekte und Strukturen 212 10.1 Dynamische Speicherobjekte... 212 10.1.1 Dynamisch Objekte m it»new«anlegen... 213 10.1.2 Fehler bei der Speicheranforderung abfangen... 215 10.1.3 Speicher m it»delete«wieder freigeben... 215 10.1.4 Der smarte»unique_ptr«٠p ointer... 217 10.2 Erste eigene Datentypen mit Strukturen........ 219 10.2.1 Strukturen deklarieren, erzeugen und in itia lisie re n... 221 10.2.2 Zugriff auf die Strukturelemente... 222 10.2.3 Zugriff auf die Elementein einer Funktion... 223 10.2.4 Methoden statt Funktionen...ᅭ 225 10.2.5 Strukturen vergleichen... 226 10.3 Aufzählungstyp»enum «... 227 10.4 Eigene Namen m it»»using«... 230 10.5 Kontrollfragen und Aufgaben... 231

11 Klassen 232 11.1 Klassen... 232 11.1.1 Klassendefinition... 233 11.1.2 Methoden defin iere n... 235 11.1.3 Zugriffskontrolle m it»public«und»private«... 237 11.1.4 Zugriff auf die Daten innerhalb einer Klasse... 240 11.1.5 Objekte erzeugen und benutzen........ 241 11.2 Konstruktoren... 246 11.2.1 Konstruktorendeklarieren... 247 11.2.2 Konstruktoren definieren... 248 11.2.3 Implizite Konvertierungen verhindern -»explicit«... 251 11.2.4 Optimierung 1: Klassenelemente gleich direkt initialisieren... 252 11.2.5 Optim ierung 2: Konstruktoren delegieren... 253 11.2.6 Standardkonstruktor (Default-Konstruktor)... 255 11.2.7 Kopierkonstruktor... 256 11.2.8 Verschiebekonstruktor (Move-Konstruktor)... 258 11.3 Destruktoren... 260 11.3.1 Lebensdauer eines Objekts... 261 11.3.2 Wann wird ein Destruktor erforderlich?.... 261 11.3.3 Destruktor deklarieren... 262 11.3.4 Destruktor definieren... 263 11.4 M ethoden... 266 11.4.1»inline«-Methoden... 266 11.4.2 Konstante Methoden (»nur-lesen-erlaubt«)... 269 11.4.3 >>th s«-zeiger... 271 11.5 Kontrollfragen und Aufgaben... 273 ใใ

12 Objekte und Klassenelemente 275 12.1 Konstante Objekte... 275 12.2 Objekt einer Klasse als Parameter... 276 12.2.1 Objekte einer Klasseninstanz an eine Funktion Ubergeben... 276 12.2.2 Objekte von Klasseninstanz an eine Methode übergeben... 280 12.2.3 Das Zielobjekt m it dem»this«-zeiger... 282 12.3 Objekte einer Klasse als Rückgabewerte... 284 12.4 Arrays von O bjekten... 287 12.5 Dynamische Objekte... 288 12.6 Mehr zu den Klassenelementen... 290 12.6.1 Rohe Zeiger als Klassenelemente oder direkt die Nullregel... 290 12-6.2 Die großen F ü n f... 299 12.6.3 Statische Klassenelemente... 302 12.6.4 Konstante Klassenelemente... 306 12.7 Andere Klassenobjekte als Datenelement einer Klasse.... 308 12.8 Freundfunktionen (»friend«)... 313 12.9 Kontrollfragen und Aufgaben... 315 13 Operatoren überladen 317 13.1 Schlüsselwort»»operator«... 318 13.2 Zweistellige (arithmetische) Operatoren überladen... 320 13.2.1 Operatorüberladung als Methode einer Klasse... 321 13.2.2 Operatorüberladung als globale Hilfsfunktion... 325

13.3 Einstellige Operatoren überladen... 327 13.4 Zuweisungsoperator überladen... 331 13.5 EinVAusgabeoperator überladen... 336 13.5.1 Eingabeoperator»>>«überladen... 336 13.5.2 Ausgabeoperator» くく überladen.............. 337 13.6 Weitere Operatorüberladungen... 339 13.7 Konvertierungsoperatoren... 340 13.7.1 Konvertierungskonstruktor... 340 13.7.2 Konvertierungsfunktion... 342 13.8 Kontrollfragen und Aufgaben... 344 14 Vererbung (Abgeleitete Klassen) 345 14.1 Die Vorbereitung... 346 14.2 Die Ableitung einer Klasse... 347 14.2.1 >>publ c«-zug ffs٢echte einer abgeleiteten Klasse... 350 14.2 Erben und erweitern... 350 14.2.3 Zugriff auf die D aten... 351 14.2.4 Überschreiben von Klassenelementen... 353 14.2.5 Konstruktoren... 354 14.2.6 D estruktor... 356 14.2.7 Program mbeispiel... 356 14.2.8 Zugriffsrecht»)protected«... 357 14.2.9 Implizite Typumwandlung abgeleiteter Klassen.. 359 14.2.10 Konstruktoren vererben... 360 14.2.11 Virtuelle Methoden... 361 14.2.12 Abstrakte Klassen und Methoden... 364 14.3 Kontrollfragen und Aufgaben... 364

15 Templates 366 15.1 Funktions-Templates... 366 15.1.1 Funktions-Template d e f in ie r 367 15.1.2 Typübereinstimmung... 370 15.1.3 Funktions-Templates über mehrere Module... 370 15.1.4 Funktions-Template spezialisieren 370 15.1.5 Templates m it verschiedenen Parametern... 372 15.1.6 Explizite Template-Argumente 374 15.2 Klassen-Templates... 375 15.2.1 Klassen-Template definieren... 375 15.2.2 Methoden von Klassen-Templates definieren... 376 15.2.3 Methoden von Klassen-Template spezialisieren... 377 15.2.4 Klassen-Template instanziieren... 378 15.2.5 Klassen-Template m it mehreren formalen Param etern... ^go 15.3 Templates der Standardbibliothek.............. 380 15.3.1 Container der Standardbibliothek... 381 15.3.2 Iteratoren... 386 15.3.3 Algorithmen... 386 15.4 Kontrollfragen und Aufgaben... 388 16 Ausnahmebehandlung (Fehlerbehandlung) 390 16.1 Ausnahme auslösen... 391 16.2 Ausnahme auffangen und behandeln... 392 16.2.1 Alternatives»catch (...)«... 396 16.2.2 Stack-Abwicklung... 397 16.2.3 Ausnahme m it»throw«weiterwerfen... 397 16.3 Ausnahmeklassen (Fehlerklassen)... 400

16.4 Standardausnahmen... 402 16.4.1 Virtuelle Methode»whato«... 403 16.4.2 Anwenden der Standardausnahmen 403 16.5 Systemausnahmen... 407 16.5.1» b a d jllo c «... 407 16.5.2» b a d ja st«... 408 16.5.3» b a d jy p e id «... 408 16.5.4» b a d jx c e p tio n «... 408 16.6 Kontrollfragen... 409 17 EinVAusgabestreams für Dateien 410 17.1 Der Umgang mit Dateien in c + +... 410 17 2 Verschiedene Streams für D ateien... 411 17.3 Datei öffnen und schließen... 411 17.3.1 Verschiedene Modi zum Offnen von Dateien... 412 17.3.2 Datei schließen... 413 17.3.3 Formatiertes Lesen und Schreiben..... 414 17.3.4 Byteweise lesen und schreiben... 415 17.3.5 Zeilenweise lesen und schreiben........... 417 17.3.6 Blockweise lesen und schreiben... 418 17-3.7 Lese-oder Schreibeposition d 419 17.4 Kontrollfragen und Aufgaben... 421 Anhang 422 A Weitere Features in C++11/C ++14... 422 Α.1 Grundsätzliche Neuerungen 422 Α.1.1 Rangebasierte»for«-Schleife... 422

Α.1.2 Lambda-Funktionen... 423 Α.1.3 RValue(neueMove-Semantik)... 425 Α.1.4 Generische Programmierung Variadle Templates... 426 Α.1.5»decitype«und die neue Kuckgabesyntax 4 /8 Α.1.6»constexpr«... 431 Α.1.7 Code m it»[[deprecated]]«als veraltet kennzeichnen (C++14)... 432 Α.1.8 Binares Literal (C++14)... 434 Α.1.9 Digitales Trennzechen für große Zahlen (C++14)... 434 Α.1.10 Automatische Rückgabetypenermittlung (C++14) 435 Α.2 Standardbibliothek-neue Bibliotheken... 435 Α.2.1 Reguläre Ausdrücke 436 Α.2.2 Z eitbibliothek... 438 Α.2.3 Smart P ointer... 441 Α.3 M u ltith re a d in g... 445 Α.3.1 Anfache Threads erzeugen............ 446 Α.3.2 Chaos verm eiden... 448 B Lösungen de Übungsaufgaben... 452 Β.1 Lösungen zu Kapitel 2... 452 Β.2 Lösungen zu Kapitel 3... 452 Β.3 Lösungen zu Kapitel 4... 453 Β.4 Lösungen zu Kapitel 5... 455 Β.5 Lösungen zu Kapitel 6... 456 Β.6 Lösungen zu Kapitel 7... 457 Β.7 Lösungen zu Kapitel 8... 457 Β.8 Lösungen zu Kapitel 9... 460 Β.9 Lösungen zu Kapitel 1 0... 462 Β.10 Lösungen zu Kapitel 1 1... 464 Β.11 Lösungen zu Kapitel 1 2... 465

В.12 Lösungen zu Kapitel 13... 467 Β.13 Lösungen zu Kapitel 14... 468 Β.14 Lösungen zu Kapitel 15... 470 Β.15 Lösungen zu Kapitel 16... 471 Β.16 Lösungen zu Kapitel 17... 471 Index... 473