Warenkorb

C++

Das umfassende Handbuch zu Modern C++ – aktuell zu C++17

Das Handbuch für moderne C++-Entwicklung



  • Das Lehr- und Nachschlagewerk zu Modern C++, aktuell zu C++17

  • Spachgrundlagen, OOP, Standardbibliothek, GUI-Programmierung u. v. m.

  • Mit Guidelines und Techniken für gutes Coden

Das Handbuch führt Sie in die
moderne C++-Entwicklung ein und zeigt, wie Sie Programme mit höchsten Ansprüchen an Funktionalität, Effizienz und Sicherheit entwickeln. Ausführlich werden der Sprachkern, die objektorientierte Programmierung und die Standardbibliothek behandelt. Auch auf die C++-Entwicklung über den Standard hinaus wird eingegangen. Ziel des Buches ist, dass
Sie lernen, wie guter kompakter, effizienter und sicherer C++-Code geschrieben wird.

Aus dem Inhalt:


  • Sprachgrundlagen

  • Fehlerbehandlung

  • Objektorientierte Programmierung

  • Zeiger

  • Schnittstelle zu C

  • Templates

  • Container

  • Standardbibliothek

  • C++ Core Guidelines

  • GUI-Programmierung mit Qt

  • Extra: Tutorials zum Thema "guter Code"

Die Fachpresse zur Vorauflage:

iX - Magazin für professionelle Informationstechnik: »Empfehlung der Redaktion!«

Rezension
Die Fachpresse zur Vorauflage:

iX - Magazin für professionelle Informationstechnik: "Empfehlung der Redaktion!"

Portrait
Torsten T. Will, Jahrgang 1970, beschäftigte sich bereits während seines Diploms in Informatik mit Programmiersprachen und ihren Konzepten. C++ hat ihn schon in seinen Anfängen fasziniert und begleitet. Andere Programmierprojekte bewältigte er vor allem in Pascal, Java, Scala und Python. Seit 2004 schreibt er im Fachmagazin c't gelegentlich über C++ und Python. Was dann noch an Zeit übrig bleibt, geht in die Fotografie.
… weiterlesen
  • Artikelbild-0


  •   Vorwort ... 23

    TEIL I  Grundlagen ... 27

      1.  Das C++-Handbuch ... 29

           1.1 ... Neu und Modern ... 30

           1.2 ... »Dan«-Kapitel ... 30

           1.3 ... Darstellung in diesem Buch ... 31

           1.4 ... Verwendete Formatierungen ... 31

           1.5 ... Sorry for my Denglish ... 32

      2.  Programmieren in C++ ... 35

           2.1 ... Übersetzen ... 36

           2.2 ... Übersetzungsphasen ... 36

           2.3 ... Aktuelle Compiler ... 38

           2.4 ... Entwicklungsumgebungen ... 39

           2.5 ... Die Kommandozeile unter Ubuntu ... 40

           2.6 ... Die IDE »Microsoft Visual Studio Community« unter Windows ... 44

           2.7 ... Das Beispielprogramm beschleunigen ... 46

      3.  C++ für Umsteiger ... 49

      4.  Die Grundbausteine von C++ ... 55

           4.1 ... Kommentare ... 58

           4.2 ... Die »include«-Direktive ... 58

           4.3 ... Die Standardbibliothek ... 58

           4.4 ... Die Funktion »main()« ... 59

           4.5 ... Typen ... 59

           4.6 ... Variablen ... 60

           4.7 ... Initialisierung ... 60

           4.8 ... Ausgabe auf der Konsole ... 61

           4.9 ... Anweisungen ... 61

           4.10 ... Ohne Eile erklärt ... 62

           4.11 ... Operatoren ... 85

           4.12 ... Eingebaute Datentypen ... 98

           4.13 ... Undefiniertes und unspezifiziertes Verhalten ... 132

      5.  Guter Code, 1. Dan: Lesbar programmieren ... 135

           5.1 ... Kommentare ... 135

           5.2 ... Dokumentation ... 136

           5.3 ... Einrückungen und Zeilenlänge ... 137

           5.4 ... Zeilen pro Funktion und Datei ... 138

           5.5 ... Klammern und Leerzeichen ... 139

           5.6 ... Namen ... 140

      6.  Höhere Datentypen ... 143

           6.1 ... Strings und Streams ... 144

           6.2 ... Der Zeichenkettentyp »string« ... 144

           6.3 ... Streams ... 148

           6.4 ... Behälter und Zeiger ... 155

           6.5 ... Die einfachen Sequenzcontainer ... 156

           6.6 ... Algorithmen ... 161

           6.7 ... Zeiger und C-Arrays ... 161

      7.  Funktionen ... 163

           7.1 ... Deklaration und Definition einer Funktion ... 164

           7.2 ... Funktionstyp ... 165

           7.3 ... Funktionen verwenden ... 165

           7.4 ... Eine Funktion definieren ... 167

           7.5 ... Mehr zu Parametern ... 168

           7.6 ... Funktionskörper ... 172

           7.7 ... Parameter umwandeln ... 173

           7.8 ... Funktionen überladen ... 175

           7.9 ... Default-Parameter ... 177

           7.10 ... Beliebig viele Argumente ... 179

           7.11 ... Alternative Schreibweise zur Funktionsdeklaration ... 179

           7.12 ... Spezialitäten ... 180

      8.  Anweisungen im Detail ... 185

           8.1 ... Der Anweisungsblock ... 188

           8.2 ... Die leere Anweisung ... 190

           8.3 ... Deklarationsanweisung ... 191

           8.4 ... Die Ausdrucksanweisung ... 192

           8.5 ... Die »if«-Anweisung ... 193

           8.6 ... Die »while«-Schleife ... 195

           8.7 ... Die »do-while«-Schleife ... 197

           8.8 ... Die »for«-Schleife ... 198

           8.9 ... Die bereichsbasierte »for«-Schleife ... 200

           8.10 ... Die »switch«-Verzweigung ... 202

           8.11 ... Die »break«-Anweisung ... 206

           8.12 ... Die »continue«-Anweisung ... 207

           8.13 ... Die »return«-Anweisung ... 207

           8.14 ... Die »goto«-Anweisung ... 209

           8.15 ... Der »try-catch«-Block und »throw« ... 210

           8.16 ... Zusammenfassung ... 212

      9.  Ausdrücke im Detail ... 213

           9.1 ... Berechnungen und Seiteneffekte ... 214

           9.2 ... Arten von Ausdrücken ... 215

           9.3 ... Literale ... 216

           9.4 ... Bezeichner ... 216

           9.5 ... Klammern ... 217

           9.6 ... Funktionsaufruf und Index-Zugriff ... 218

           9.7 ... Zuweisung ... 218

           9.8 ... Typumwandlung ... 220

    10.  Fehlerbehandlung ... 221

           10.1 ... Fehlerbehandlung mit Fehlercodes ... 223

           10.2 ... Was ist eine Ausnahme? ... 226

           10.3 ... Kleinere Fehlerbehandlungen ... 229

           10.4 ... Weiterwerfen -- »rethrow« ... 229

           10.5 ... Die Reihenfolge im »catch« ... 230

           10.6 ... Typen für Exceptions ... 232

           10.7 ... Wenn eine Exception aus »main« herausfällt ... 233

    11.  Guter Code, 2. Dan: Modularisierung ... 235

           11.1 ... Programm, Bibliothek, Objektdatei ... 235

           11.2 ... Bausteine ... 236

           11.3 ... Trennen der Funktionalitäten ... 237

           11.4 ... Ein modulares Beispielprojekt ... 238

           11.5 ... Spezialthema: Unity-Builds ... 249

    TEIL II  Objektorientierte Programmierung und mehr ... 251

    12.  Von der Struktur zur Klasse ... 253

           12.1 ... Initialisierung ... 255

           12.2 ... Rückgabe eigener Typen ... 256

           12.3 ... Methoden statt Funktionen ... 257

           12.4 ... Das bessere »drucke« ... 260

           12.5 ... Eine Ausgabe wie jede andere ... 262

           12.6 ... Methoden inline definieren ... 263

           12.7 ... Implementierung und Definition trennen ... 264

           12.8 ... Initialisierung per Konstruktor ... 265

           12.9 ... Struktur oder Klasse? ... 271

           12.10 ... Zwischenergebnis ... 275

           12.11 ... Verwendung eigener Datentypen ... 276

           12.12 ... Typinferenz mit »auto« ... 291

           12.13 ... Eigene Klassen in Standardcontainern ... 294

    13.  Namensräume und Qualifizierer ... 297

           13.1 ... Der Namensraum »std« ... 297

           13.2 ... Anonymer Namensraum ... 301

           13.3 ... »static« macht lokal ... 303

           13.4 ... »static« teilt gern ... 303

           13.5 ... »static« macht dauerhaft ... 306

           13.6 ... Zusammenfassung ... 309

           13.7 ... Const ... 310

           13.8 ... Flüchtig mit »volatile« ... 324

    14.  Guter Code, 3. Dan: Testen ... 327

           14.1 ... Arten des Tests ... 327

           14.2 ... Frameworks ... 335

           14.3 ... Boost.Test ... 339

           14.4 ... Hilfsmakros für Assertions ... 343

           14.5 ... Ein Beispielprojekt mit Unittests ... 346

    15.  Vererbung ... 359

           15.1 ... Beziehungen ... 360

           15.2 ... Vererbung in C++ ... 362

           15.3 ... Hat-ein versus ist-ein ... 363

           15.4 ... Gemeinsamkeiten finden ... 364

           15.5 ... Abgeleitete Typen erweitern ... 366

           15.6 ... Methoden überschreiben ... 367

           15.7 ... Wie Methoden funktionieren ... 368

           15.8 ... Virtuelle Methoden ... 370

           15.9 ... Konstruktoren in Klassenhierarchien ... 372

           15.10 ... Typumwandlung in Klassenhierarchien ... 373

           15.11 ... Wann virtuell? ... 375

           15.12 ... Andere Designs zur Erweiterbarkeit ... 376

    16.  Der Lebenszyklus von Klassen ... 379

           16.1 ... Erzeugung und Zerstörung ... 380

           16.2 ... Temporary: kurzlebige Werte ... 382

           16.3 ... Der Destruktor zum Konstruktor ... 383

           16.4 ... Yoda-Bedingung ... 387

           16.5 ... Konstruktion, Destruktion und Exceptions ... 389

           16.6 ... Kopieren ... 390

           16.7 ... Zuweisungsoperator ... 393

           16.8 ... Streichen von Methoden ... 396

           16.9 ... Verschiebeoperationen ... 398

           16.10 ... Operatoren ... 403

           16.11 ... Eigene Operatoren in einem Datentyp ... 406

           16.12 ... Besondere Klassenformen ... 411

    17.  Guter Code, 4. Dan: Sicherheit, Qualität und Nachhaltigkeit ... 415

           17.1 ... Die Nuller-Regel ... 415

           17.2 ... RAII -- Resource Acquisition Is Initialization ... 420

    18.  Spezielles für Klassen ... 429

           18.1 ... Darf alles sehen -- »friend«-Klassen ... 429

           18.2 ... non-public-Vererbung ... 434

           18.3 ... Signatur-Klassen als Interfaces ... 439

           18.4 ... Multiple Vererbung ... 443

           18.5 ... Rautenförmige multiple Vererbung -- »virtual« für Klassenhierarchien ... 452

           18.6 ... Literale Datentypen -- »constexpr« für Konstruktoren ... 456

    19.  Guter Code, 5. Dan: Klassisches objektorientiertes Design ... 459

           19.1 ... Objekte in C++ ... 461

           19.2 ... Objektorientiert designen ... 462

    TEIL III  Fortgeschrittene Themen ... 481

    20.  Zeiger ... 483

           20.1 ... Adressen ... 484

           20.2 ... Zeiger ... 485

           20.3 ... Gefahren von Aliasing ... 487

           20.4 ... Heapspeicher und Stapelspeicher ... 489

           20.5 ... Smarte Pointer ... 492

           20.6 ... Rohe Zeiger ... 501

           20.7 ... C-Arrays ... 506

           20.8 ... Iteratoren ... 511

           20.9 ... Zeiger als Iteratoren ... 513

           20.10 ... Zeiger im Container ... 513

           20.11 ... Die Ausnahme: wann das Wegräumen nicht nötig ist ... 514

    21.  Makros ... 517

           21.1 ... Der Präprozessor ... 518

           21.2 ... Vorsicht vor fehlenden Klammern ... 521

           21.3 ... Vorsicht vor Mehrfachausführung ... 522

           21.4 ... Typvariabilität von Makros ... 523

           21.5 ... Zusammenfassung ... 526

    22.  Schnittstelle zu C ... 527

           22.1 ... Mit Bibliotheken arbeiten ... 528

           22.2 ... C-Header ... 529

           22.3 ... C-Ressourcen ... 532

           22.4 ... »void«-Pointer ... 532

           22.5 ... Daten lesen ... 533

           22.6 ... Das Hauptprogramm ... 534

           22.7 ... Zusammenfassung ... 535

    23.  Templates ... 537

           23.1 ... Funktionstemplates ... 538

           23.2 ... Funktionstemplates in der Standardbibliothek ... 547

           23.3 ... Eine Klasse als Funktion ... 551

           23.4 ... Templateklassen ... 565

           23.5 ... Templates mit variabler Argumentanzahl ... 576

           23.6 ... Eigene Literale ... 580

    TEIL IV  Die Standardbibliothek ... 591

    24.  Container ... 593

           24.1 ... Grundlagen ... 594

           24.2 ... Iteratoren-Grundlagen ... 601

           24.3 ... Allokatoren: Speicherfragen ... 605

           24.4 ... Container-Gemeinsamkeiten ... 607

           24.5 ... Ein Überblick über die Standardcontainer-Klassen ... 608

           24.6 ... Die sequenziellen Containerklassen ... 612

           24.7 ... Assoziativ und geordnet ... 647

           24.8 ... Nur assoziativ und nicht garantiert ... 678

           24.9 ... Container-Adapter ... 706

           24.10 ... Sonderfälle: »string«, »basic string« und »vector« ... 707

           24.11 ... Sonderfälle: »vector«, »array« und »bitset« ... 708

           24.12 ... Sonderfall: Value-Array mit »valarray<>« ... 711

    25.  Container-Unterstützung ... 721

           25.1 ... Algorithmen ... 721

           25.2 ... Iteratoren ... 723

           25.3 ... Iterator-Adapter ... 723

           25.4 ... Algorithmen der Standardbibliothek ... 724

           25.5 ... Liste der Algorithmusfunktionen ... 726

           25.6 ... Kopie statt Zuweisung -- Werte in uninitialisierten Speicherbereichen ... 740

           25.7 ... Eigene Algorithmen ... 741

    26.  Guter Code, 6. Dan: Für jede Aufgabe der richtige Container ... 745

           26.1 ... Alle Container nach Aspekten sortiert ... 745

           26.2 ... Rezepte für Container ... 750

           26.3 ... Iteratoren sind mehr als nur Zeiger ... 756

           26.4 ... Algorithmen je nach Container unterschiedlich implementieren ... 758

    27.  Streams ... 761

           27.1 ... Ein- und Ausgabekonzept ... 761

           27.2 ... Globale, vordefinierte Standardstreams ... 762

           27.3 ... Methoden für die Aus- und Eingabe von Streams ... 764

           27.4 ... Fehlerbehandlung und Zustand von Streams ... 768

           27.5 ... Streams manipulieren und formatieren ... 771

           27.6 ... Streams für die Dateiein- und Dateiausgabe ... 782

           27.7 ... Streams für Strings ... 796

           27.8 ... Streampuffer ... 801

    28.  Standardbibliothek -- Extras ... 805

           28.1 ... »pair« und »tuple« ... 805

           28.2 ... Reguläre Ausdrücke ... 812

           28.3 ... Zufall ... 821

           28.4 ... Mathematisches ... 830

           28.5 ... Systemfehlerbehandlung mit »system error« ... 849

           28.6 ... Laufzeit-Typinformationen -- »« und »« ... 858

           28.7 ... Hilfsklassen rund um Funktoren -- »« ... 862

           28.8 ... Ausblick auf C++17 ... 869

    29.  Threads -- Programmieren mit Mehrläufigkeit ... 875

           29.1 ... C++-Threading-Grundlagen ... 876

           29.2 ... Gemeinsame Daten ... 891

           29.3 ... Andere Möglichkeiten zur Synchronisation ... 904

           29.4 ... Im eigenen Speicher mit »thread local« ... 908

           29.5 ... Mit »condition variable« auf Ereignisse warten ... 909

           29.6 ... Einmal warten mit »future« ... 914

           29.7 ... Atomics ... 924

           29.8 ... Zusammenfassung ... 930

           29.9 ... Ausblick auf C++17 ... 932

    TEIL V  Über den Standard hinaus ... 933

    30.  Guter Code, 7. Dan: Richtlinien ... 935

           30.1 ... Guideline Support Library ... 936

           30.2 ... C++ Core Guidelines ... 937

    31.  GUI-Programmierung mit Qt ... 951

           31.1 ... Ein erstes Miniprogramm ... 955

           31.2 ... Objektbäume und Besitz ... 966

           31.3 ... Signale und Slots ... 967

           31.4 ... Klassenhierarchie von Qt ... 987

           31.5 ... Eigene Widgets mit dem Qt Designer erstellen ... 990

           31.6 ... Widgets anordnen ... 996

           31.7 ... Dialoge erstellen mit »QDialog« ... 1000

           31.8 ... Vorgefertigte Dialoge von Qt ... 1008

           31.9 ... Eigenen Dialog mit dem Qt Designer erstellen ... 1015

           31.10 ... Grafische Bedienelemente von Qt (Qt-Widgets) ... 1031

           31.11 ... Anwendungen in einem Hauptfenster ... 1037

           31.12 ... Zusammenfassung ... 1048

      Cheat Sheet ... 1052

      Index ... 1055

In den Warenkorb

Beschreibung

Produktdetails

Einband gebundene Ausgabe
Seitenzahl 1067
Erscheinungsdatum 27.12.2017
Sprache Deutsch
ISBN 978-3-8362-4360-5
Reihe Rheinwerk Computing
Verlag Rheinwerk
Maße (L/B/H) 25/18,2/6,1 cm
Gewicht 1887 g
Abbildungen mit Abbildungen
Auflage 1
Verkaufsrang 73187
Buch (gebundene Ausgabe)
Buch (gebundene Ausgabe)
39,90
39,90
inkl. gesetzl. MwSt.
inkl. gesetzl. MwSt.
Sofort lieferbar Versandkostenfrei
Sofort lieferbar
Versandkostenfrei
In den Warenkorb
PAYBACK Punkte
Vielen Dank für Ihr Feedback!
Entschuldigung, beim Absenden Ihres Feedbacks ist ein Fehler passiert. Bitte versuchen Sie es erneut.
Ihr Feedback zur Seite
Haben Sie alle relevanten Informationen erhalten?
Ihr Feedback ist anonym. Wir nutzen es, um unsere Produktseiten zu verbessern. Bitte haben Sie Verständnis, dass wir Ihnen keine Rückmeldung geben können. Wenn Sie Kontakt mit uns aufnehmen möchten, können Sie sich aber gerne an unseren Kundenservice wenden.

Kundenbewertungen

Es wurden noch keine Bewertungen geschrieben.