Dieser Grundkurs ist genau das Richtige für alle, die einen schnellen Einstieg in die Programmiersprache C++ und einen Überblick über die Grundlagen ohne viel Beiwerk suchen. Ausführlich und jederzeit verständlich erklären Martin Guddat und Jürgen Wolf alles, was notwendig ist, damit Sie modernes C++ lernen und objektorientiert programmieren können. Von der ersten Seite an geht es sofort los mit einfachen Programmen bis hin zur Entwicklung komplexerer Anwendungen. Übungen am Ende jedes Kapitels helfen Einsteiger*innen und vor allem Selbstlerner*innen beim Verstehen der Sprache. Die kompakte Darstellung macht das Buch zu einer unverzichtbaren Referenz für die Arbeit mit C++.Diese fünfte Auflage wurde umfassend überarbeitet und modernisiert.Das Buch eignet sich hervorragend als Begleiter für das Studium der Informatik und anderer technischer Fächer. Aus dem Inhalt: Das erste Programm in C++ Basisdatentypen Typumwandlung Verzweigungen Schleifen Funktionen Präprozessor-Direktiven Arrays und Zeichenketten (Strings) Zeiger (Pointer) Dynamische Speicherobjekte und Strukturen Namensräume Modulare Programmierung Klassen und Objekte Vererbung Operatoren überladen Templates Exceptionhandling (Fehlerbehandlung) Modernes C++ bis C++23
Mit Codebeispielen, Übungen und Musterlösungen zum Selbstlernen
Autorentext
Prof. Dr. Martin Guddat lehrt an der Westfälischen Hochschule in Gelsenkirchen und Bocholt. Er hat langjährige Erfahrung in der Erstellung technischer Software, z. B. für Mobiltelefone und Fingerabdrucksensoren, zudem als IT-Projektleiter und als Berater im Bereich der Systemintegration großer Softwareprojekte.
Inhalt
1. Einstieg in die Welt von C++ ... 19 1.1 ... Der C++-Standard ... 19 1.2 ... Die nötigen Werkzeuge für C++ ... 20 1.3 ... Übersetzen mit g++ und clang++ ... 24 1.4 ... Übersetzen mit einer Entwicklungsumgebung ... 26 1.5 ... Listings zum Buch ... 30 1.6 ... Kontrollfragen und Aufgaben im Buch ... 30 1.7 ... Aufgabe ... 30 1.8 ... Aufgabe zu C++ 23 ... 31 2. Erste Schritte in C++ ... 33 2.1 ... Das erste Programm in C++ ... 33 2.2 ... Anweisungen und Ausdrücke ... 35 2.3 ... Die Standardeingabe- und -ausgabestreams ... 37 2.4 ... Einige Begriffe zu C++ ... 43 2.5 ... Kontrollfragen und Aufgaben ... 45 3. Die eingebauten C++-Basisdatentypen ... 46 3.1 ... Variablen ... 46 3.2 ... Definition und Deklaration von Variablen ... 47 3.3 ... Initialisierung und Zuweisung von Werten ... 48 3.4 ... Ganzzahltypen ... 51 3.5 ... Ganzzahldatentyp für Zeichen ... 58 3.6 ... Fließkommazahlentypen ... 68 3.7 ... Der »auto«-Typ ... 71 3.8 ... Konstanten ... 72 3.9 ... Die Byte-Größe mit dem »sizeof«-Operator ... 73 3.10 ... Limits für die Basisdatentypen ... 74 3.11 ... Kontrollfragen und Aufgaben ... 77 4. Arbeiten mit den eingebauten Typen ... 78 4.1 ... Arithmetische Operatoren ... 78 4.2 ... Ungenaue Fließkommazahlen ... 86 4.3 ... Typumwandlung ... 88 4.4 ... Formatierte Ausgabe von Werten ... 94 4.5 ... Kontrollfragen und Aufgaben ... 95 5. Kontrollstrukturen ... 97 5.1 ... Der eingebaute Datentyp »bool« ... 97 5.2 ... Vergleichsoperatoren ... 98 5.3 ... Bedingte Anweisung mit »if« ... 101 5.4 ... Anweisungsblock für Kontrollstrukturen ... 102 5.5 ... Alternative »else«-Verzweigung ... 103 5.6 ... Bedingte Anweisung mit Initialisierung ... 105 5.7 ... Mehrfache Verzweigung ... 105 5.8 ... Der Bedingungsoperator »?:« ... 108 5.9 ... Logische Operatoren ... 109 5.10 ... Die Fallunterscheidung -- »switch« ... 111 5.11 ... Die kopfgesteuerte »while«-Schleife ... 114 5.12 ... Die fußgesteuerte »do-while«-Schleife ... 116 5.13 ... Die Zählschleife »for« ... 117 5.14 ... Kontrollierte Sprunganweisungen ... 121 5.15 ... Kontrollfragen und Aufgaben ... 123 6. Arrays und Strings ... 125 6.1 ... Arrays ... 125 6.2 ... Strings in C++ ... 139 6.3 ... Kontrollfragen und Aufgaben ... 145 7. Referenzen und Zeiger ... 146 7.1 ... Referenzen ... 146 7.2 ... Zeiger ... 149 7.3 ... Kontrollfragen und Aufgaben ... 158 8. Funktionen ... 160 8.1 ... Grundlegendes zu Funktionen ... 160 8.2 ... Referenzen als Parameter und Rückgabe ... 180 8.3 ... Zeiger als Parameter und Rückgabewert ... 187 8.4 ... Übergabe großer Elemente als Funktionsparameter ... 188 8.5 ... C-Arrays oder C-Strings als Funktionsparameter ... 190 8.6 ... Kontrollfragen und Aufgaben ... 191 9. Modularisierung und Präprozessor ... 193 9.1 ... Präprozessor-Direktiven ... 193 9.2 ... Modulare Programmierung ... 199 9.3 ... Namensräume ... 205 9.4 ... Spezifizierer und Qualifikatoren ... 217 9.5 ... Kontrollfragen und Aufgaben ... 223 10. Strukturen, Aufzählungen und dynamische Speicherobjekte ... 226 10.1 ... Erste eigene Datentypen mit Strukturen ... 226 10.2 ... Der Aufzählungstyp »enum« ... 235 10.3 ... Eigene Namen mit »using« ... 237 10.4 ... Dynamische Speicherobjekte ... 238 10.5 ... Kontrollfragen und Aufgaben ... 249 11. Klassen ... 250 11.1 ... Klassen ... 250 11.2 ... Konstruktoren ... 264 11.3 ... Destruktoren ... 281 11.4 ... Weitere Formen von Methoden ... 286 11.5 ... Kontrollfragen und Aufgaben ... 295 12. Objekte und Klassenelemente ... 297 12.1 ... Objekt als Parameter ... 297 12.2 ... Freundfunktionen (»friend«) ... 302 12.3 ... Objekte einer Klasse als Rückgabewerte ... 304 12.4 ... Arrays von Objekten ... 310 12.5 ... Dynamische Objekte ... 311 12.6 ... Klassenobjekte als Klassenattribute ... 313 12.7 ... Eine Containerklasse als Klassenattribut ... 318 12.8 ... Smart Pointer als Klassenattribut ... 321 12.9 ... Statische und konstante Klassenelemente ... 325 12.10 ... Die Nullregel (Rule of Zero) ... 333 12.11 ... Kontrollfragen und Aufgaben ... 336 13. Operatoren überladen ... 338 13.1 ... Das Schlüsselwort »operator« ... 340 13.2 ... Zweistellige (arithmetische) Operatoren überladen ... 341 13.3 ... Einstellige Operatoren überladen ... 348 13.4 ... Den Zuweisungsoperator überladen ... 352 13.5 ... Ausgabe- und Eingabeoperatoren überladen ... 357 13.6 ... Vergleichsoperatoren ... 361 13.7 ... Weitere Operatorüberladungen ... 364 13.8 ... Konvertierungsoperatoren ... 364 13.9 ... Kontrollfragen und Aufgaben ... 368 14. Vererbung (Abgeleitete Klassen) ... 370 14.1 ... Die Vorbereitung ... 371 14.2 ... Das Ableiten einer Klasse ... 373 14.3 ... Kontrollfragen und Aufgaben ... 393 15. Templates ... 395 15.1 ... Funktionstemplates ... 395 15.2 ... Klassentemplates ... 405 15.3 ... Kontrollfragen und Aufgaben ... 411 16. Ausnahmebehandlung (Fehlerbehandlung) ... 413 16.1 ... Grundlagen der Fehlerbehandlung ... 413 16.2 ... Eine Ausnahme auslösen ... 415 16.3 ... Eine Ausnahme auffangen und behandeln ... 416 16.4 ... Standardausnahmen (Fehlerklassen) ... 426 16.5 ... Die Alternative »std::expected« ... 431 16.6 ... Vermeidung von Fehlern mit [[nodiscard]] ... 433 16.7 ... Fehlerdiagnose mit »std::source_location« ... 434 16.8 ... Kontrollfragen ... 435 17. Ein-/Ausgabestreams für Dateien ... 436 17.1 ... Der Umgang mit Dateien in C++ ... 436 17.2 ... Verschiedene Streams für Dateien ... 436 17.3 ... Eine Datei öffnen und schließen ... 437 17.4 ... Mit »std::filesystem« arbeiten ... 449 17.5 ... Kontrollfragen und Aufgaben ... 450 18. Die Standardbibliothek und weitere Sprachelemente ... 452 18.1 ... Die Container der Standardbibliothek ... 452 18.2 ... Algorithmen der Standardbibliothek ... 465 18.3 ... Fortgeschrittene Sprachelemente ... 468 18.4 ... Fortgeschrittene Funktionskonzepte ... 473 18.5 ... Smart Pointer ... 483 18.6 ... Textansichten und Formatierung ... 494 18.7 ... Die Zeitbibliothek ... 501 18.8 ... Ausblick auf das Multithreading ... 507 Anhang ... 509 A ... Lösungen der Übungsaufgaben ... 509 Index ... 533
Mit Codebeispielen, Übungen und Musterlösungen zum Selbstlernen
Autorentext
Prof. Dr. Martin Guddat lehrt an der Westfälischen Hochschule in Gelsenkirchen und Bocholt. Er hat langjährige Erfahrung in der Erstellung technischer Software, z. B. für Mobiltelefone und Fingerabdrucksensoren, zudem als IT-Projektleiter und als Berater im Bereich der Systemintegration großer Softwareprojekte.
Inhalt
1. Einstieg in die Welt von C++ ... 19 1.1 ... Der C++-Standard ... 19 1.2 ... Die nötigen Werkzeuge für C++ ... 20 1.3 ... Übersetzen mit g++ und clang++ ... 24 1.4 ... Übersetzen mit einer Entwicklungsumgebung ... 26 1.5 ... Listings zum Buch ... 30 1.6 ... Kontrollfragen und Aufgaben im Buch ... 30 1.7 ... Aufgabe ... 30 1.8 ... Aufgabe zu C++ 23 ... 31 2. Erste Schritte in C++ ... 33 2.1 ... Das erste Programm in C++ ... 33 2.2 ... Anweisungen und Ausdrücke ... 35 2.3 ... Die Standardeingabe- und -ausgabestreams ... 37 2.4 ... Einige Begriffe zu C++ ... 43 2.5 ... Kontrollfragen und Aufgaben ... 45 3. Die eingebauten C++-Basisdatentypen ... 46 3.1 ... Variablen ... 46 3.2 ... Definition und Deklaration von Variablen ... 47 3.3 ... Initialisierung und Zuweisung von Werten ... 48 3.4 ... Ganzzahltypen ... 51 3.5 ... Ganzzahldatentyp für Zeichen ... 58 3.6 ... Fließkommazahlentypen ... 68 3.7 ... Der »auto«-Typ ... 71 3.8 ... Konstanten ... 72 3.9 ... Die Byte-Größe mit dem »sizeof«-Operator ... 73 3.10 ... Limits für die Basisdatentypen ... 74 3.11 ... Kontrollfragen und Aufgaben ... 77 4. Arbeiten mit den eingebauten Typen ... 78 4.1 ... Arithmetische Operatoren ... 78 4.2 ... Ungenaue Fließkommazahlen ... 86 4.3 ... Typumwandlung ... 88 4.4 ... Formatierte Ausgabe von Werten ... 94 4.5 ... Kontrollfragen und Aufgaben ... 95 5. Kontrollstrukturen ... 97 5.1 ... Der eingebaute Datentyp »bool« ... 97 5.2 ... Vergleichsoperatoren ... 98 5.3 ... Bedingte Anweisung mit »if« ... 101 5.4 ... Anweisungsblock für Kontrollstrukturen ... 102 5.5 ... Alternative »else«-Verzweigung ... 103 5.6 ... Bedingte Anweisung mit Initialisierung ... 105 5.7 ... Mehrfache Verzweigung ... 105 5.8 ... Der Bedingungsoperator »?:« ... 108 5.9 ... Logische Operatoren ... 109 5.10 ... Die Fallunterscheidung -- »switch« ... 111 5.11 ... Die kopfgesteuerte »while«-Schleife ... 114 5.12 ... Die fußgesteuerte »do-while«-Schleife ... 116 5.13 ... Die Zählschleife »for« ... 117 5.14 ... Kontrollierte Sprunganweisungen ... 121 5.15 ... Kontrollfragen und Aufgaben ... 123 6. Arrays und Strings ... 125 6.1 ... Arrays ... 125 6.2 ... Strings in C++ ... 139 6.3 ... Kontrollfragen und Aufgaben ... 145 7. Referenzen und Zeiger ... 146 7.1 ... Referenzen ... 146 7.2 ... Zeiger ... 149 7.3 ... Kontrollfragen und Aufgaben ... 158 8. Funktionen ... 160 8.1 ... Grundlegendes zu Funktionen ... 160 8.2 ... Referenzen als Parameter und Rückgabe ... 180 8.3 ... Zeiger als Parameter und Rückgabewert ... 187 8.4 ... Übergabe großer Elemente als Funktionsparameter ... 188 8.5 ... C-Arrays oder C-Strings als Funktionsparameter ... 190 8.6 ... Kontrollfragen und Aufgaben ... 191 9. Modularisierung und Präprozessor ... 193 9.1 ... Präprozessor-Direktiven ... 193 9.2 ... Modulare Programmierung ... 199 9.3 ... Namensräume ... 205 9.4 ... Spezifizierer und Qualifikatoren ... 217 9.5 ... Kontrollfragen und Aufgaben ... 223 10. Strukturen, Aufzählungen und dynamische Speicherobjekte ... 226 10.1 ... Erste eigene Datentypen mit Strukturen ... 226 10.2 ... Der Aufzählungstyp »enum« ... 235 10.3 ... Eigene Namen mit »using« ... 237 10.4 ... Dynamische Speicherobjekte ... 238 10.5 ... Kontrollfragen und Aufgaben ... 249 11. Klassen ... 250 11.1 ... Klassen ... 250 11.2 ... Konstruktoren ... 264 11.3 ... Destruktoren ... 281 11.4 ... Weitere Formen von Methoden ... 286 11.5 ... Kontrollfragen und Aufgaben ... 295 12. Objekte und Klassenelemente ... 297 12.1 ... Objekt als Parameter ... 297 12.2 ... Freundfunktionen (»friend«) ... 302 12.3 ... Objekte einer Klasse als Rückgabewerte ... 304 12.4 ... Arrays von Objekten ... 310 12.5 ... Dynamische Objekte ... 311 12.6 ... Klassenobjekte als Klassenattribute ... 313 12.7 ... Eine Containerklasse als Klassenattribut ... 318 12.8 ... Smart Pointer als Klassenattribut ... 321 12.9 ... Statische und konstante Klassenelemente ... 325 12.10 ... Die Nullregel (Rule of Zero) ... 333 12.11 ... Kontrollfragen und Aufgaben ... 336 13. Operatoren überladen ... 338 13.1 ... Das Schlüsselwort »operator« ... 340 13.2 ... Zweistellige (arithmetische) Operatoren überladen ... 341 13.3 ... Einstellige Operatoren überladen ... 348 13.4 ... Den Zuweisungsoperator überladen ... 352 13.5 ... Ausgabe- und Eingabeoperatoren überladen ... 357 13.6 ... Vergleichsoperatoren ... 361 13.7 ... Weitere Operatorüberladungen ... 364 13.8 ... Konvertierungsoperatoren ... 364 13.9 ... Kontrollfragen und Aufgaben ... 368 14. Vererbung (Abgeleitete Klassen) ... 370 14.1 ... Die Vorbereitung ... 371 14.2 ... Das Ableiten einer Klasse ... 373 14.3 ... Kontrollfragen und Aufgaben ... 393 15. Templates ... 395 15.1 ... Funktionstemplates ... 395 15.2 ... Klassentemplates ... 405 15.3 ... Kontrollfragen und Aufgaben ... 411 16. Ausnahmebehandlung (Fehlerbehandlung) ... 413 16.1 ... Grundlagen der Fehlerbehandlung ... 413 16.2 ... Eine Ausnahme auslösen ... 415 16.3 ... Eine Ausnahme auffangen und behandeln ... 416 16.4 ... Standardausnahmen (Fehlerklassen) ... 426 16.5 ... Die Alternative »std::expected« ... 431 16.6 ... Vermeidung von Fehlern mit [[nodiscard]] ... 433 16.7 ... Fehlerdiagnose mit »std::source_location« ... 434 16.8 ... Kontrollfragen ... 435 17. Ein-/Ausgabestreams für Dateien ... 436 17.1 ... Der Umgang mit Dateien in C++ ... 436 17.2 ... Verschiedene Streams für Dateien ... 436 17.3 ... Eine Datei öffnen und schließen ... 437 17.4 ... Mit »std::filesystem« arbeiten ... 449 17.5 ... Kontrollfragen und Aufgaben ... 450 18. Die Standardbibliothek und weitere Sprachelemente ... 452 18.1 ... Die Container der Standardbibliothek ... 452 18.2 ... Algorithmen der Standardbibliothek ... 465 18.3 ... Fortgeschrittene Sprachelemente ... 468 18.4 ... Fortgeschrittene Funktionskonzepte ... 473 18.5 ... Smart Pointer ... 483 18.6 ... Textansichten und Formatierung ... 494 18.7 ... Die Zeitbibliothek ... 501 18.8 ... Ausblick auf das Multithreading ... 507 Anhang ... 509 A ... Lösungen der Übungsaufgaben ... 509 Index ... 533
Titel
Grundkurs C++
Autor
EAN
9783367104543
Format
E-Book (epub)
Hersteller
Veröffentlichung
06.06.2025
Digitaler Kopierschutz
frei
Dateigrösse
4 MB
Anzahl Seiten
542
Lesemotiv
Unerwartete Verzögerung
Ups, ein Fehler ist aufgetreten. Bitte versuchen Sie es später noch einmal.