Anfänger
Einführungskurs, keine vorherige Programmiererfahrung
Buchen Sie
Autor(en)
Beschreibung
Überprüfung
C++ Fibel *
* Nicht zu verwechseln mit C++ Fibel Plus (Stephen Prata), mit einer deutlich ungünstigeren Überprüfung .
Stanley Lippman, Josée Lajoie, und Barbara E. Moo ( aktualisiert für C++11 )
Mit 1.000 Seiten ist dies eine sehr gründliche Einführung in C++, die so ziemlich alles in der Sprache in einem sehr zugänglichen Format und sehr detailliert behandelt. Die fünfte Auflage (erschienen am 16. August 2012) deckt C++11 ab.
[Rückblick]
Programmieren: Grundlagen und Praxis mit C++
Bjarne Stroustrup, 2. Auflage - 25. Mai 2014 ( aktualisiert für C++11/C++14 )
Eine Einführung in die Programmierung mit C++ durch den Schöpfer dieser Sprache. Eine gute Lektüre, die keine vorherige Programmiererfahrung voraussetzt, aber nicht nur für Anfänger geeignet ist.
Einsteiger, mit vorheriger Programmiererfahrung
Buchen Sie
Autor(en)
Beschreibung
Überprüfung
Eine Tour durch C++
Bjarne Stroustrup ( 2. Auflage für C++17 )
Die "Tour" ist ein schneller (ca. 180 Seiten und 14 Kapitel) tutorieller Überblick über den gesamten Standard C++ (Sprache und Standardbibliothek), und die Verwendung von C++11 ) auf mäßig hohem Niveau für Leute, die bereits C++ kennen oder zumindest erfahrene Programmierer sind. Dieses Buch ist eine erweiterte Version des Materials, das die Kapitel 2-5 von The C++ Programming Language, 4th edition, darstellt.
Beschleunigtes C++
Andrew Koenig und Barbara Moo, 1. Auflage - 24. August 2000
Dies deckt im Wesentlichen den gleichen Bereich ab wie die C++ Fibel , aber auf einem Viertel des Platzes. Dies liegt vor allem daran, dass es nicht versucht, eine Einführung in Programmierung sondern eine Einführung in C++ für Personen, die zuvor in einer anderen Sprache programmiert haben. Es hat eine steilere Lernkurve, aber für diejenigen, die damit umgehen können, ist es eine sehr kompakte Einführung in die Sprache. (Historisch gesehen hat es Neuland betreten, da es das erste Einsteigerbuch war, das einen modernen Ansatz für die Vermittlung der Sprache verwendete). Trotzdem ist das C++, das es lehrt, rein C++98.
[Rückblick]
Bewährte Praktiken
Buchen Sie
Autor(en)
Beschreibung
Überprüfung
Wirksames C++
Scott Meyers, 3. Auflage - 22. Mai 2005
Dieses Buch wurde mit dem Ziel geschrieben, das beste zweite Buch zu sein, das C++-Programmierer lesen sollten, und das ist gelungen. Frühere Ausgaben richteten sich an Programmierer, die von C kamen, die dritte Ausgabe ändert dies und zielt auf Programmierer, die von Sprachen wie Java kommen. Es präsentiert ~50 leicht zu merkende Faustregeln zusammen mit ihrer Begründung in einem sehr zugänglichen (und angenehmen) Stil. Für C++11 und C++14 sind die Beispiele und einige Themen veraltet und Effective Modern C++ sollte vorgezogen werden.
[Rückblick]
Effektives modernes C++
Scott Meyers
Dieses Buch richtet sich an C++-Programmierer, die den Übergang von C++03 zu C++11 und C++14 vollziehen. Dieses Buch kann als Fortsetzung und "Korrektur" einiger Teile des vorherigen Buches - "Effective C++" - betrachtet werden. Sie decken nicht die gleichen Dinge ab, haben aber ein ähnliches, auf Punkten basierendes Thema.
Wirksame STL
Scott Meyers
Dies zielt darauf ab, das Gleiche mit dem Teil der Standardbibliothek zu tun, der aus der STL kommt, was Wirksames C++ auf die Sprache als Ganzes auswirkt: Es werden Faustregeln und deren Begründung vorgestellt.
[Rückblick]
Zwischenbericht
Buchen Sie
Autor(en)
Beschreibung
Überprüfung
Wirksameres C++
Scott Meyers
Noch mehr Faustregeln als Wirksames C++ . Nicht so wichtig wie die im ersten Buch, aber trotzdem gut zu wissen.
Außergewöhnliches C++
Herb Sutter
Präsentiert als eine Reihe von Rätseln, hat dies eine der besten und gründlichen Diskussionen über die richtige Ressourcenverwaltung und Ausnahmesicherheit in C++ durch Resource Acquisition is Initialization (RAII) zusätzlich zu einer eingehenden Behandlung einer Vielzahl von anderen Themen, einschließlich der pimpl Idiom, Name Lookup, gute Klasse Design, und die C++-Speicher-Modell.
[Rückblick]
Mehr außergewöhnliches C++
Herb Sutter
Deckt zusätzliche Themen der Ausnahmesicherheit ab, die nicht in Außergewöhnliches C++ Zusätzlich zur Diskussion über die effektive objektorientierte Programmierung in C++ und die korrekte Verwendung der STL.
[Rückblick]
Außergewöhnlicher C++-Stil
Herb Sutter
Erörtert generische Programmierung, Optimierung und Ressourcenverwaltung; dieses Buch enthält auch eine ausgezeichnete Darstellung, wie man modularen Code in C++ schreibt, indem man Nichtmitgliederfunktionen und das Prinzip der einzigen Verantwortung verwendet.
[Rückblick]
C++-Codierungsstandards
Herb Sutter und Andrei Alexandrescu
Mit "Codierungsstandards" ist hier nicht gemeint: "Wie viele Leerzeichen sollte ich meinen Code einrücken?" Dieses Buch enthält 101 bewährte Verfahren, Redewendungen und häufige Fallstricke, die Ihnen helfen können, korrekten, verständlichen und effizienten C++-Code zu schreiben.
[Rückblick]
C++-Vorlagen: Das vollständige Handbuch
David Vandevoorde und Nicolai M. Josuttis
Dies ist die Buch über Templates, wie sie vor C++11 existierten. Es deckt alles ab, von den Grundlagen bis hin zu einigen der fortgeschrittensten Template-Metaprogrammierungen, und erklärt jedes Detail, wie Templates funktionieren (sowohl konzeptionell als auch wie sie implementiert werden) und diskutiert viele häufige Fallstricke. In den Anhängen finden sich hervorragende Zusammenfassungen der One Definition Rule (ODR) und der Überlastauflösung. A zweite Auflage die C++11, C++14 und C++17 abdeckt, wurde bereits veröffentlicht.
[Rückblick]
C++ 17 - Der vollständige Leitfaden
Nicolai M. Josuttis
Dieses Buch beschreibt alle neuen Funktionen, die im C++17-Standard eingeführt wurden und deckt alles ab, von den einfachen Funktionen wie 'Inline-Variablen' und 'constexpr if' bis hin zu 'Polymorphen Speicherressourcen' und 'New and Delete with over aligned Data'.
[Rückblick]
C++ 20 - Der vollständige Leitfaden
Nicolai M. Josuttis
Dieses Buch stellt alle neuen Sprach- und Bibliotheksfunktionen von C++20 vor. Es behandelt die Motivation und den Kontext jeder neuen Funktion mit Beispielen und Hintergrundinformationen. Der Schwerpunkt liegt darauf, wie sich diese Funktionen auf die tägliche Programmierung auswirken, was es bedeutet, sie zu kombinieren, und wie man von C++20 in der Praxis profitieren kann. (Beachten Sie, dass dieses Buch Schritt für Schritt veröffentlicht .)
C++ in Aktion
Bartosz Milewski
Dieses Buch erklärt C++ und seine Funktionen, indem es eine Anwendung von Grund auf aufbaut.
[Rückblick]
Funktionale Programmierung in C++
Ivan Cukic
Dieses Buch führt funktionale Programmiertechniken in modernes C++ (C++11 und später) ein. Eine sehr schöne Lektüre für alle, die funktionale Programmierparadigmen auf C++ anwenden wollen.
Fortgeschrittene
Buchen Sie
Autor(en)
Beschreibung
Überprüfung
Modernes C++-Design
Andrei Alexandrescu
Ein bahnbrechendes Buch über fortgeschrittene generische Programmiertechniken. Führt in richtlinienbasiertes Design, Typlisten und grundlegende generische Programmieridiome ein und erklärt dann, wie viele nützliche Entwurfsmuster (einschließlich kleiner Objektzuweiser, Funktoren, Fabriken, Besucher und Multimethoden) mit generischer Programmierung effizient, modular und sauber implementiert werden können.
[Rückblick]
C++ Schablonen-Metaprogrammierung
David Abrahams und Aleksey Gurtovoy
C++-Gleichzeitigkeit in Aktion
Anthony Williams
Ein Buch, das die Unterstützung der Parallelität in C++11 abdeckt, einschließlich der Thread-Bibliothek, der Atomics-Bibliothek, des C++-Speichermodells, der Sperren und Mutexe sowie Fragen des Entwurfs und der Fehlersuche in Multithread-Anwendungen. A zweite Auflage die C++14 und C++17 abdeckt, wurde bereits veröffentlicht.
[Rückblick]
Fortgeschrittene C++-Metaprogrammierung
Davide Di Gennaro
Ein Handbuch zu TMP-Techniken aus der Zeit vor C++11, das sich mehr auf die Praxis als auf die Theorie konzentriert. Es gibt eine Menge Schnipsel in diesem Buch, von denen einige durch Type Traits obsolet geworden sind, aber die Techniken sind trotzdem nützlich zu wissen. Wenn man sich mit der eigenwilligen Formatierung/Bearbeitung abfinden kann, ist es einfacher zu lesen als Alexandrescu und wohl auch lohnender. Für erfahrenere Entwickler besteht eine gute Chance, etwas über eine dunkle Ecke von C++ (eine Eigenart) zu erfahren, die normalerweise nur durch umfangreiche Erfahrung zustande kommt.
Large Scale C++ Band I, Prozess und Architektur (2020)
John Lakos
Teil eins einer dreiteiligen Serie zur Erweiterung des älteren Buches "Large Scale C++ Design". Lakos erklärt praxiserprobte Techniken zur Verwaltung sehr großer C++-Softwareprojekte. Wenn Sie an einem großen C++-Softwareprojekt arbeiten, ist dies eine großartige Lektüre, die die Beziehung zwischen physischer und logischer Struktur, Strategien für Komponenten und deren Wiederverwendung detailliert beschreibt.
[Rückblick]
Referenz-Stil - Alle Niveaus
Buchen Sie
Autor(en)
Beschreibung
Überprüfung
Die Programmiersprache C++
Bjarne Stroustrup ( aktualisiert für C++11 )
Die klassische Einführung in C++ von seinem Schöpfer. Sie wurde parallel zum Klassiker K&R geschrieben und liest sich in der Tat sehr ähnlich. Sie deckt so ziemlich alles ab, von der Kernsprache über die Standardbibliothek bis hin zu Programmierparadigmen und der Philosophie der Sprache.
[Rückblick]
Hinweis: Alle Versionen des C++-Standards werden in der Frage " <em><a href="https://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents">Wo finde ich die aktuellen C- oder C++-Standarddokumente? </a></em>".
C++ Standardbibliothek Tutorial und Referenz
Nicolai Josuttis ( aktualisiert für C++11 )
Die Einführung und Referenz für die C++ Standardbibliothek. Die zweite Auflage (veröffentlicht am 9. April 2012) deckt C++11 ab.
[Rückblick]
Die C++ IO-Streams und Lokale
Angelika Langer und Klaus Kreft
Zu diesem Buch gibt es nicht viel zu sagen, außer, dass es die einzige Stelle ist, an der man endgültige Antworten findet, wenn man etwas über Flüsse und Orte wissen will.
[Rückblick]
C++11/14/17/ Referenzen:
-
Die C++ 11 / 14 / 17 Norm (INCITS/ISO/IEC 14882:2011/2014/2017) Dies ist natürlich die letzte Instanz, die entscheidet, was C++ ist und was nicht. Seien Sie sich jedoch bewusst, dass es lediglich als Referenz für erfahren Nutzer, die bereit sind, viel Zeit und Mühe aufzubringen, um sie zu verstehen. Der C++17-Standard ist in elektronischer Form für 198 Schweizer Franken erhältlich.
-
Der C++17-Standard ist verfügbar, aber anscheinend nicht in einer wirtschaftlichen Form - direkt von der ISO Es kostet 198 Schweizer Franken (etwa 200 US-Dollar). Für die meisten Menschen ist die endgültiger Entwurf vor der Normung ist mehr als ausreichend (und kostenlos). Viele werden eine noch neuerer Entwurf in dem neue Funktionen dokumentiert werden, die wahrscheinlich in C++20 enthalten sein werden.
-
Überblick über das neue C++ (C++11/14) (nur PDF) (Scott Meyers) ( aktualisiert für C++14 ) Es handelt sich um die Präsentationsunterlagen (Folien und einige Vorlesungsmitschriften) eines dreitägigen Schulungskurses, der von Scott Meyers, einem hoch angesehenen Autor über C++, angeboten wurde. Auch wenn die Liste der Themen kurz ist, ist die Qualität hoch.
-
El C++ Core Richtlinien (C++11/14/17/ ) (herausgegeben von Bjarne Stroustrup und Herb Sutter) ist ein sich ständig weiterentwickelndes Online-Dokument, das aus einer Reihe von Richtlinien für die gute Nutzung von modernem C++ besteht. Die Richtlinien konzentrieren sich auf relativ übergeordnete Themen wie Schnittstellen, Ressourcenverwaltung, Speicherverwaltung und Gleichzeitigkeit, die sich auf die Anwendungsarchitektur und das Bibliotheksdesign auswirken. Das Projekt wurde angekündigt auf der CppCon'15 von Bjarne Stroustrup und anderen und begrüßt Beiträge aus der Gemeinschaft. Die meisten Leitlinien werden durch eine Begründung und Beispiele sowie Diskussionen über eine mögliche Unterstützung durch Werkzeuge ergänzt. Viele Regeln sind so konzipiert, dass sie automatisch von statischen Analysewerkzeugen überprüft werden können.
-
El C++ Super-FAQ (Marshall Cline, Bjarne Stroustrup und andere) ist ein Versuch der Standard C++ Foundation, die C++-FAQs zu vereinheitlichen, die zuvor von Marshall Cline und Bjarne Stroustrup einzeln gepflegt wurden, und auch neue Beiträge aufzunehmen. Die Artikel behandeln meist Themen auf mittlerem Niveau und sind oft in einem humorvollen Ton geschrieben. Es kann sein, dass noch nicht alle Artikel mit der neuesten Ausgabe des C++-Standards übereinstimmen.
-
cppreference.com (C++03/11/14/17/…) (initiiert von Nate Kohl) ist ein Wiki, das die grundlegenden Funktionen der Kernsprache zusammenfasst und eine umfangreiche Dokumentation der C++-Standardbibliothek enthält. Die Dokumentation ist sehr präzise, aber leichter zu lesen als das offizielle Standarddokument und bietet aufgrund des Wiki-Charakters eine bessere Navigation. Das Projekt dokumentiert alle Versionen des C++-Standards, und die Website ermöglicht die Filterung der Anzeige nach einer bestimmten Version. Das Projekt wurde vorgestellt von Nate Kohl auf der CppCon'14 .
Klassiker / Ältere
Anmerkung: Einige der in diesen Büchern enthaltenen Informationen sind möglicherweise nicht mehr aktuell oder gelten nicht mehr als bewährte Verfahren.
-
Der Entwurf und die Entwicklung von C++ (Bjarne Stroustrup) Wenn Sie wissen wollen por qué die Sprache so ist, wie sie ist, finden Sie in diesem Buch Antworten. Dies deckt alles ab vor der Normung von C++.
-
Überlegungen zu C++ - (Andrew Koenig und Barbara Moo) [Rückblick]
-
Fortgeschrittene C++-Programmierstile und Idiome (James Coplien) Ein Vorläufer der Pattern-Bewegung, der viele C++-spezifische "Idiome" beschreibt. Es ist sicherlich ein sehr gutes Buch und könnte immer noch lesenswert sein, wenn Sie die Zeit erübrigen können, aber es ist ziemlich alt und nicht auf dem neuesten Stand von C++.
-
Entwurf umfangreicher C++-Software (John Lakos) Lakos erklärt Techniken zur Verwaltung sehr großer C++-Softwareprojekte. Sicherlich eine gute Lektüre, wenn sie nur auf dem neuesten Stand wäre. Es wurde lange vor C++ 98 geschrieben und lässt viele Funktionen (z.B. Namespaces) vermissen, die für große Projekte wichtig sind. Wenn Sie an einem großen C++-Softwareprojekt arbeiten müssen, sollten Sie es vielleicht lesen, auch wenn Sie es mit mehr als nur einem Körnchen Salz genießen sollten. Nicht zu verwechseln mit der erweiterten und späteren Buchreihe Large Scale C++ Band I-III.
-
Innerhalb des C++-Objektmodells (Stanley Lippman) Wenn Sie wissen möchten, wie virtuelle Mitgliedsfunktionen üblicherweise implementiert werden und wie Basisobjekte in einem Szenario mit Mehrfachvererbung üblicherweise im Speicher angeordnet werden und wie sich all dies auf die Leistung auswirkt, finden Sie hier ausführliche Diskussionen zu diesen Themen.
-
Das kommentierte C++-Referenzhandbuch (Bjarne Stroustrup, Margaret A. Ellis) Dieses Buch ist ziemlich veraltet, da es die Version C++ 2.0 von 1989 behandelt - Templates, Ausnahmen, Namespaces und neue Casts waren noch nicht eingeführt. Dennoch wird in diesem Buch der gesamte damalige C++-Standard behandelt, wobei die Gründe, die möglichen Implementierungen und die Merkmale der Sprache erklärt werden. Dies ist kein Buch zum Erlernen von Programmierprinzipien und -mustern in C++, sondern zum Verstehen aller Aspekte der Sprache C++.
-
Denken in C++ (Bruce Eckel, 2. Auflage, 2000). Zwei Bände; ist eine Anleitung im Stil eines Tutorials kostenlos eine Reihe von Büchern für die Einstiegsstufe. Downloads: Band 1 , Band 2 . Leider sind sie mit einer Reihe von trivialen Fehlern behaftet (z.B. die Behauptung, dass Provisorien automatisch sind const
), wobei es keine offizielle Errata-Liste gibt. Ein Teil 3 rd Die Errata-Liste der Partei ist verfügbar unter http://www.computersciencelab.com/Eckel.htm aber sie wird offenbar nicht gewartet.
-
Wissenschaftliches und technisches C++: Eine Einführung in fortgeschrittene Techniken und Beispiele (John Barton und Lee Nackman) Es ist ein umfassendes und sehr detailliertes Buch, das versucht, alle in C++ verfügbaren Funktionen im Zusammenhang mit numerischen Methoden zu erklären und zu nutzen. Es führte damals mehrere neue Techniken ein, wie das Curiously Recurring Template Pattern (CRTP, auch Barton-Nackman-Trick genannt). Es leistete Pionierarbeit bei verschiedenen Techniken wie der Dimensionsanalyse und der automatischen Differenzierung. Es wurde mit einer Menge kompilierbaren und nützlichen Codes ausgeliefert, von einem Parser für Ausdrücke bis hin zu einem Lapack-Wrapper. Der Code ist noch online verfügbar . Leider sind die Bücher im Stil und in den C++-Funktionen etwas veraltet, aber zu der Zeit (1994, vor der STL) war es eine unglaubliche Meisterleistung. Die Kapitel über dynamische Vererbung sind etwas kompliziert zu verstehen und nicht sehr nützlich. Eine aktualisierte Version dieses Klassikers, die die Semantik von Verschiebungen und die Lehren aus der STL enthält, wäre sehr schön.