Kostenlos testen
EnglishEnglish
EspañolSpanish
简体中文Chinese
繁體中文Chinese (Traditional)
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Searching...
SoBrief
Die C++-Programmiersprache

Die C++-Programmiersprache

von Bjarne Stroustrup 1986 1030 Seiten
4.10
4.000+ Bewertungen
Anhören
14 Minuten
Amazon Kindle Audible
3 Tage Vollzugriff testen
Schalten Sie Audioinhalte & mehr frei!
Weiter

Wichtigste Erkenntnisse

1. C++: Eine Sprache für elegante und effiziente Abstraktionen

C++ ist eine Sprache, die elegante und effiziente Abstraktionen ermöglicht.

Duale Natur. C++ wurde entwickelt, um die Kluft zwischen niedrigstufigem Hardwarezugriff und hochstufigen Problemfeldern zu überbrücken. Es übernimmt die Effizienz von C für die Systemprogrammierung und ergänzt diese um mächtige Abstraktionsmechanismen, inspiriert von Simula. Ziel ist es, eine Sprache zu bieten, die sowohl leistungsfähig als auch ausdrucksstark ist und es Programmierern erlaubt, Konzepte direkt im Code abzubilden.

  • Direkte Abbildung auf Hardware
  • Leistbare Abstraktionsmechanismen
  • Allgemein einsetzbare Sprache
  • Schwerpunkt auf Systemprogrammierung

Null Overhead. Ein zentrales Prinzip von C++ ist das „Zero-Overhead-Prinzip“: Man zahlt nicht für das, was man nicht nutzt. Sprachfeatures und grundlegende Abstraktionen sind so gestaltet, dass sie mindestens so effizient sind wie handgeschriebener Code. Das ist entscheidend für leistungs- und ressourcen-kritische Anwendungen.

  • Effizienz steht an erster Stelle
  • Keine versteckten Kosten für ungenutzte Features
  • Ermöglicht Einsatz in ressourcenbeschränkten Umgebungen

Ideen ausdrücken. Die Sprache unterstützt Programmierer dabei, Ideen klar und direkt im Code auszudrücken. Das bedeutet, Konzepte als Typen, Beziehungen als Hierarchien oder Parametrisierungen und unabhängige Ideen getrennt darzustellen. Die Kombination verschiedener Programmierparadigmen wird gefördert, um optimale Lösungen zu erzielen.

  • Ideen direkt ausdrücken
  • Beziehungen abbilden
  • Unabhängige Ideen getrennt halten
  • Einfache Ideen einfach umsetzen

2. Modernes C++ (C++11) – eine bessere Sprache

C++ fühlt sich an wie eine neue Sprache.

Bedeutende Weiterentwicklung. Die Sprache C++ hat sich im Laufe der Jahre stark weiterentwickelt, besonders mit dem Standard C++11. Diese Neuerungen machen C++ zu einem deutlich mächtigeren und ausgereifteren Werkzeug für hochwertige Softwareentwicklung. Modernes C++ ermöglicht eine klarere, einfachere und direktere Ausdrucksweise.

  • C++11 im Vergleich zu C++98
  • Erhöhte Ausdruckskraft
  • Verbesserte Sicherheit und Performance

Wichtige Features. C++11 brachte zahlreiche Neuerungen, die die Art und Weise, wie C++ programmiert wird, grundlegend verändert haben. Dazu zählen bessere Unterstützung für Nebenläufigkeit, Ressourcenmanagement und generische Programmierung sowie syntaktische Erleichterungen, die Boilerplate reduzieren.

  • Nebenläufigkeit (std::thread, std::mutex)
  • Move-Semantik (std::move, Rvalue-Referenzen)
  • Smart Pointer (unique_ptr, shared_ptr)
  • Lambdas
  • auto und constexpr
  • Initializer-Listen

Moderne Stile übernehmen. Programmierer werden dringend ermutigt, moderne C++-Features und -Stile zu nutzen. Das Festhalten an älteren C++98- oder C-Stilen führt zu weniger wartbarem, weniger performantem und qualitativ schlechterem Code. Der Standard garantiert zwar Abwärtskompatibilität, doch Fortschritt ist unvermeidlich.

3. Klassen: Das Fundament der Abstraktion

Das zentrale Sprachmerkmal von C++ ist die Klasse.

Benutzerdefinierte Typen. Klassen sind das Hauptmittel, um benutzerdefinierte Typen zu schaffen, die Konzepte aus der Problemwelt direkt im Code repräsentieren. Eine wohlüberlegte Klassenauswahl macht Programme verständlicher, leichter nachvollziehbar und einfacher zu ändern.

  • Konzepte als Typen darstellen
  • Grundlage für Abstraktionsmechanismen
  • Erhöht Klarheit und Wartbarkeit

Kapselung. Klassen ermöglichen die Trennung zwischen öffentlicher Schnittstelle (was Nutzer sehen und verwenden) und privater Implementierung (Daten und Hilfsfunktionen). Das erzwingt Datenkapselung, garantiert konsistente Datennutzung und erlaubt Änderungen an der Implementierung ohne Auswirkungen auf den Nutzercode.

  • Öffentliche Schnittstelle
  • Private Implementierung
  • Datenkapselung
  • Trennung der Verantwortlichkeiten

Konstruktoren und Destruktoren. Konstruktoren definieren, wie Objekte initialisiert werden, und sorgen dafür, dass sie bei Erstellung in einem gültigen Zustand sind. Destruktoren regeln die Aufräumarbeiten beim Objektzerfall, was für das Ressourcenmanagement essenziell ist. Dieses Konstruktor-/Destruktor-Paar bildet die Grundlage für Techniken wie RAII.

  • Garantierte Initialisierung
  • Ressourcenakquise (Konstruktoren)
  • Ressourcenfreigabe (Destruktoren)
  • Klasseninvarianten

4. Ressourcenmanagement: RAII und Smart Pointer

Die Kombination aus Konstruktor und Destruktor ist die Basis vieler eleganter Techniken.

RAII-Prinzip. Resource Acquisition Is Initialization (RAII) ist eine fundamentale C++-Technik, bei der der Erwerb von Ressourcen an die Objektinitialisierung (Konstruktor) und die Freigabe an die Objektzerstörung (Destruktor) gebunden ist. So werden Ressourcen auch bei Ausnahmen oder vorzeitigem Funktionsende zuverlässig verwaltet.

  • Ressourcenakquise im Konstruktor
  • Ressourcenfreigabe im Destruktor
  • Automatisches Aufräumen beim Verlassen des Gültigkeitsbereichs
  • Ausnahme-Sicherheit

Lecks vermeiden. RAII verhindert Ressourcenlecks (z. B. Speicherlecks) und andere Fehler im Ressourcenmanagement (zu frühe oder doppelte Freigabe). Indem die Ressourcenzuständigkeit in Objekten gekapselt wird, übernimmt der Compiler die Aufräumarbeiten automatisch.

  • Vermeidet „nacktes“ new und delete
  • Verhindert Speicherlecks
  • Handhabt Dateien, Locks, Threads usw.

Smart Pointer. unique_ptr und shared_ptr sind Smart Pointer aus der Standardbibliothek, die RAII nutzen, um dynamisch allozierten Speicher zu verwalten. unique_ptr bietet exklusive Besitzrechte, shared_ptr teilt Besitz mittels Referenzzählung. Sie sind der manuelle Speicherverwaltung mit rohen Zeigern vorzuziehen.

  • unique_ptr (exklusiver Besitz)
  • shared_ptr (geteilter Besitz)
  • Automatische Speicherfreigabe
  • Vermeidet manuelle delete-Aufrufe

5. Templates: Ermöglichen generische Programmierung

Ein Template ist eine Klasse oder Funktion, die wir mit Typen oder Werten parametrieren.

Kompilierzeit-Parametrisierung. Templates erlauben es, Klassen, Funktionen und Typalias mit Typen, Werten oder anderen Templates zu parametrisieren. So entsteht Code, der mit verschiedenen Typen funktioniert, ohne an Performance einzubüßen.

  • Parametrisierung nach Typ oder Wert
  • Kompilierzeit-Polymorphismus
  • Code-Generierung

Generische Programmierung. Templates bilden die Grundlage der generischen Programmierung in C++, die Algorithmen und Datenstrukturen entwirft, die mit beliebigen Typen funktionieren, sofern diese bestimmte Anforderungen (Konzepte) erfüllen. So entsteht wiederverwendbarer, typsicherer und effizienter Code.

  • Allgemeine Algorithmen entwerfen
  • Mit verschiedenen Typen arbeiten
  • Konzepte (Anforderungen an Argumente)

Effizienz. Templates sind ein Kompilierzeit-Mechanismus, der in der Regel keinen Laufzeit-Overhead verursacht im Vergleich zu handgeschriebenem Code. Dies wird durch Inlining und Kompilierzeit-Berechnungen erreicht.

  • Kein Laufzeit-Overhead
  • Ermöglicht Inlining
  • Kompilierzeit-Berechnung

6. Die Standardbibliothek: Ihr unverzichtbares Werkzeug

Kein bedeutendes Programm entsteht allein in einer nackten Programmiersprache.

Unverzichtbare Komponenten. Die Standardbibliothek stellt eine umfassende Sammlung grundlegender Bausteine bereit, die für fast jedes C++-Programm essenziell sind. Dazu gehören Container, Algorithmen, Ein-/Ausgabefunktionen, Hilfsmittel und Unterstützung für Nebenläufigkeit.

  • Container (vector, list, map, set)
  • Algorithmen (sort, find, copy, unique)
  • I/O-Streams (cin, cout, cerr)
  • Hilfsmittel (pair, tuple, Smart Pointer, Zeitfunktionen)
  • Nebenläufigkeitsunterstützung

Fundament. Die Standardbibliothek ist selbst in C++ geschrieben, was die Leistungsfähigkeit der Sprache demonstriert und als Vorbild für gutes C++-Design dient. Sie bildet eine gemeinsame Basis für weitere Bibliotheken und Anwendungen und fördert Portabilität und Interoperabilität.

  • In C++ implementiert
  • Vorbild für gutes Design
  • Fördert Portabilität
  • Ermöglicht Interoperabilität

Standard bevorzugen. Programmierer werden dringend angehalten, Standardbibliothekskomponenten zu verwenden, anstatt das Rad neu zu erfinden. Standardkomponenten sind gut gestaltet, optimiert, weit verbreitet und bekannt, was Wartungskosten senkt und die Codequalität verbessert.

  • Rad nicht neu erfinden
  • Gut gestaltet und optimiert
  • Weit verbreitet und bekannt

7. Nebenläufigkeit: Eingebaute Unterstützung für Parallelität

Nebenläufigkeit – die gleichzeitige Ausführung mehrerer Aufgaben – wird häufig genutzt, um Durchsatz zu erhöhen (durch Nutzung mehrerer Prozessoren für eine Berechnung) oder Reaktionsfähigkeit zu verbessern (indem ein Programmteil fortschreitet, während ein anderer auf eine Antwort wartet).

Modernes Feature. C++ bietet robuste, portable und typsichere Unterstützung für nebenläufige Programmierung, um den Anforderungen moderner Mehrkern-Hardware gerecht zu werden. Dies ist eine bedeutende Neuerung in C++11.

  • Eingebaute Unterstützung
  • Portabel und typsicher
  • Für Mehrkernprozessoren

Threads und Tasks. Die Bibliothek stellt niedrigstufige Thread-Verwaltung (std::thread) und höherstufige taskbasierte Abstraktionen (std::future, std::async) bereit. Threads teilen sich einen Adressraum, was sorgfältige Synchronisation erfordert, um Datenrennen zu vermeiden.

  • std::thread für System-Threads
  • Gemeinsamer Adressraum
  • Task-basierte Nebenläufigkeit (std::async)

Synchronisation. Mechanismen wie Mutexes (std::mutex) und Bedingungsvariablen (std::condition_variable) steuern den Zugriff auf gemeinsame Daten und synchronisieren Threads. Atomare Operationen bieten feinkörnige, sperrfreie Synchronisation für einfache Typen.

  • Mutexes und Locks
  • Bedingungsvariablen
  • Atomare Operationen
  • Vermeidung von Datenrennen

8. Typen und Grundlegende Einrichtungen meistern

Jeder Name und jeder Ausdruck hat einen zugehörigen Typ.

Grundbausteine. Das Verständnis der eingebauten Typen (int, double, char, bool), der Variablendeklaration, der Gültigkeitsbereiche und der grundlegenden Kontrollstrukturen (if, switch, for, while) ist essenziell. Diese Elemente, aus C übernommen und erweitert, bilden die Basis aller C++-Programme.

  • Eingebaute Typen
  • Deklarationen und Gültigkeitsbereiche
  • Kontrollstrukturen
  • Ausdrücke und Operatoren

Typsicherheit. C++ ist statisch typisiert, das heißt, Typen werden zur Kompilierzeit geprüft. Das hilft, Fehler früh zu erkennen. Features wie auto für Typinferenz und constexpr für Kompilierzeit-Konstanten erhöhen Typsicherheit und Ausdruckskraft.

  • Statische Typprüfung
  • Früherkennung von Fehlern
  • auto für Typinferenz
  • constexpr für Kompilierzeit-Konstanten

Zeiger und Referenzen. C++ bietet Zeiger und Referenzen für indirekten Speicherzugriff. Diese sind mächtig, erfordern aber sorgfältige Handhabung, besonders bei Ressourcenbesitz. Smart Pointer sind rohen Zeigern bei der Speicherverwaltung vorzuziehen.

  • Zeiger und Referenzen
  • Indirekter Speicherzugriff
  • Smart Pointer für Besitzverwaltung

9. Programmierparadigmen kombinieren für effektive Lösungen

Die beste (wartbarste, lesbarste, kleinste, schnellste usw.) Lösung für die meisten nicht-trivialen Probleme kombiniert oft Aspekte verschiedener Programmierparadigmen.

Synthese statt Exklusivität. C++ unterstützt mehrere Programmierparadigmen: prozedurale, Datenabstraktion, objektorientierte und generische Programmierung. Die Sprache erlaubt deren Kombination, und die effektivsten Lösungen mischen Techniken aus mehreren Paradigmen.

  • Prozedurale Programmierung
  • Datenabstraktion
  • Objektorientierte Programmierung
  • Generische Programmierung

Dogmen vermeiden. Sich ausschließlich auf einen Stil zu beschränken oder C++ als „Hybrid“ zu sehen, verkennt die Stärke seiner Synthese. Die Sprache bietet Werkzeuge, die elegant kombiniert werden können, um vielfältige Techniken zu unterstützen.

  • Sprache unterstützt Kombinationen
  • Ein-Paradigmen-Denken vermeiden

Praktisches Design. Effektives C++-Programmieren bedeutet, die richtigen Werkzeuge (Sprachfeatures, Standardbibliothek) aus dem verfügbaren Set auszuwählen und passend zu kombinieren. Das erfordert Verständnis der Stärken und Schwächen verschiedener Ansätze und ihres Zusammenspiels.

  • Die richtigen Werkzeuge wählen
  • Features effektiv kombinieren
  • Fokus auf Design und Techniken

10. Fehlerbehandlung: Ausnahmen und Garantien

Das Konzept der Ausnahme dient dazu, Informationen vom Ort der Fehlererkennung zu einem Ort der Fehlerbehandlung zu transportieren.

Trennung der Anliegen. Ausnahmen (throw, catch) bieten einen Mechanismus, um den Code, der einen Fehler erkennt, vom Code zu trennen, der ihn behandelt. Das ist besonders in großen Programmen und Bibliotheken nützlich, wo der Erkennende nicht weiß, wie er sich erholen soll, und der Behandler den Fehler nicht direkt erkennen kann.

  • throw zum Melden von Fehlern
  • catch zur Fehlerbehandlung
  • Entkopplung von Erkennung und Behandlung

Ausnahmesicherheit. Die Standardbibliothek garantiert Zustände von Objekten bei Ausnahmen. Die Basisgarantie sichert Invarianten und verhindert Ressourcenlecks. Die starke Garantie stellt sicher, dass Operationen entweder erfolgreich sind oder keine Wirkung haben.

  • Basisgarantie (keine Lecks, gültiger Zustand)
  • Starke Garantie (Alles oder Nichts)
  • noexcept-Spezifizierer

Integration mit RAII. Die Fehlerbehandlung ist eng mit RAII verknüpft. So werden Ressourcen, die von Objekten erworben wurden, beim Stack-Unwinding bei Ausnahmeausbreitung korrekt freigegeben, was Lecks verhindert und Aufräumcode vereinfacht.

  • RAII für Aufräumarbeiten
  • Destruktoren werden beim Stack-Unwinding aufgerufen

Zuletzt aktualisiert:

Report Issue

Rezensionsübersicht

4.10 von 5
Durchschnitt von 4.000+ Bewertungen von Goodreads und Amazon.

Die Programmiersprache C++ gilt als das maßgebliche Standardwerk für C++, verfasst vom Schöpfer der Sprache selbst. Obwohl das Buch für seine umfassende Darstellung und wertvollen Einblicke gelobt wird, weisen viele Rezensenten darauf hin, dass es sich nicht für Einsteiger eignet. Es wird als dicht und mitunter ausführlich beschrieben und empfiehlt sich eher als Nachschlagewerk denn als Lernhilfe. Erfahrene Programmierer schätzen die Tiefe und technischen Details, während einige den Schreibstil und die Struktur kritisieren. Dennoch gilt das Buch insgesamt als unverzichtbare Ressource für Profis, stellt jedoch für Neulinge eine Herausforderung dar.

Your rating:
4.49
139 Bewertungen
Want to read the full book?

FAQ

1. What is "The C++ Programming Language" by Bjarne Stroustrup about?

  • Comprehensive C++ Reference: The book is a thorough guide to C++, covering every language feature and standard-library component a professional programmer is likely to need.
  • Modern C++ Focus: It emphasizes C++11 and later standards, teaching both foundational and advanced programming techniques, including object-oriented and generic programming.
  • Practical and Theoretical: The book balances practical programming advice with explanations of underlying concepts and design principles, making it suitable for both beginners and advanced programmers.
  • Standard Library Emphasis: It introduces and encourages the use of the C++ standard library to simplify programming tasks and promote efficient, maintainable code.

2. Why should I read "The C++ Programming Language" by Bjarne Stroustrup?

  • Authoritative Guidance: Written by the creator of C++, Bjarne Stroustrup, the book offers deep insights into the language’s design, evolution, and best practices.
  • Up-to-date Content: It covers modern C++ features, including C++11 and beyond, ensuring readers stay current with the language’s evolution and standard library extensions.
  • Focus on Quality Software: The book stresses writing correct, maintainable, and efficient code, with advice on concurrency, memory management, and abstraction.
  • Long-term Resource: It serves as both a tutorial and a reference, making it valuable for ongoing learning and problem-solving.

3. What are the key takeaways from "The C++ Programming Language" by Bjarne Stroustrup?

  • Master Abstraction Mechanisms: The book teaches how to use classes, templates, and the standard library to write expressive, type-safe, and efficient code.
  • Embrace Modern C++: It encourages adopting C++11 features like move semantics, lambdas, and smart pointers for safer and clearer code.
  • Resource Management and RAII: Stroustrup emphasizes Resource Acquisition Is Initialization (RAII) and smart pointers to manage resources and prevent leaks.
  • Combine Programming Styles: Readers learn to effectively mix procedural, object-oriented, and generic programming for robust software design.

4. What are the best quotes from "The C++ Programming Language" by Bjarne Stroustrup and what do they mean?

  • “The purpose of computing is insight, not numbers.” – R. W. Hamming: This quote highlights that programming should aim to provide understanding and clarity, not just process data.
  • “Keep it simple: as simple as possible, but no simpler.” – A. Einstein: Stroustrup uses this to stress the importance of simplicity in concurrent and general programming to avoid unnecessary complexity.
  • “Knowledge is of two kinds. We know a subject ourselves, or we know where we can find information on it.” – Samuel Johnson: This underscores the value of knowing how to learn and where to find information, a crucial skill for programmers.
  • Quotes as Guidance: These quotes are used throughout the book to reinforce key programming philosophies and best practices.

5. What programming styles and abstraction mechanisms does "The C++ Programming Language" by Bjarne Stroustrup support?

  • Four Main Styles: The book covers procedural programming, data abstraction, object-oriented programming, and generic programming, showing how to combine them effectively.
  • Classes and Hierarchies: It explains how classes, inheritance, and polymorphism enable encapsulation and code reuse.
  • Templates and Generic Programming: Templates allow for flexible, type-safe code that can be reused across different types, with support for metaprogramming and compile-time computation.
  • Resource Management: RAII and smart pointers are presented as key tools for safe and efficient resource handling.

6. How does Bjarne Stroustrup define and advise on resource management and RAII in "The C++ Programming Language"?

  • RAII Principle: Resource Acquisition Is Initialization ties resource lifetimes to object lifetimes, ensuring resources are released properly even in the presence of exceptions.
  • Smart Pointers: The book introduces unique_ptr for exclusive ownership, shared_ptr for shared ownership, and weak_ptr to break reference cycles, automating memory management.
  • Avoid Manual Management: Stroustrup advises against manual memory management with raw pointers, recommending standard containers and smart pointers instead.
  • Exception Safety: RAII is essential for writing exception-safe code, preventing resource leaks and simplifying error handling.

7. What are the main features and advice related to concurrency in "The C++ Programming Language" by Bjarne Stroustrup?

  • Memory Model and Data Races: The book explains the C++ memory model and the importance of avoiding data races, detailing how atomic operations and synchronization primitives work.
  • Thread and Task Abstractions: It covers thread creation, joining, detaching, and thread-local storage, but advocates using higher-level abstractions like futures, promises, and async() for safer concurrency.
  • Mutexes and Condition Variables: Mutex types and RAII wrappers like lock_guard and unique_lock are introduced for safe locking, along with condition variables for thread communication.
  • Best Practices: Stroustrup recommends keeping concurrency simple, using standard facilities, and thinking in terms of tasks rather than low-level threads.

8. How does "The C++ Programming Language" by Bjarne Stroustrup explain templates, generic programming, and metaprogramming?

  • Templates for Compile-time Polymorphism: Templates allow writing generic code that works with any type meeting certain requirements, enabling code reuse and efficiency.
  • Concepts and Constraints: The book discusses expressing template argument requirements as concepts and using static_assert and enable_if to enforce constraints and improve error messages.
  • Template Metaprogramming: It introduces compile-time computation using templates, such as type functions, type predicates, and traits, to improve type safety and performance.
  • Variadic Templates: Variadic templates enable functions and classes to accept arbitrary numbers of arguments, supporting advanced patterns like type-safe printf and tuples.

9. What guidance does Bjarne Stroustrup provide on classes, inheritance, and polymorphism in "The C++ Programming Language"?

  • Classes as User-defined Types: Classes encapsulate data and behavior, supporting constructors, destructors, and operator overloading for robust abstractions.
  • Inheritance and Access Control: Derived classes inherit from base classes, with access restrictions to maintain encapsulation and support code reuse.
  • Virtual Functions and Polymorphism: Virtual functions enable run-time polymorphism, allowing correct function dispatch based on actual object types, with virtual destructors ensuring proper cleanup.
  • Interface vs. Implementation Inheritance: The book distinguishes between interface inheritance (abstract classes) and implementation inheritance, advocating their separation for flexibility and maintainability.

10. How does "The C++ Programming Language" by Bjarne Stroustrup cover the C++ Standard Library, including containers and algorithms?

  • Container Categories: The book details sequence containers (vector, list, deque), associative containers (map, set, unordered_map), and adaptors (stack, queue), advising vector as the default choice.
  • Algorithms and Iterators: STL algorithms operate on iterator pairs, supporting generic programming and container-independent code, with iterator categories affecting algorithm efficiency.
  • Smart Pointers and Resource Management: Standard smart pointers (unique_ptr, shared_ptr, weak_ptr) are covered for safe and automatic resource management.
  • String and I/O Facilities: std::string and I/O streams are presented as safer, more flexible alternatives to C-style strings and I/O, with support for formatting, locales, and user-defined types.

11. What advice does Bjarne Stroustrup give for error handling, exceptions, and writing robust code in "The C++ Programming Language"?

  • Exceptions for Error Propagation: The book advocates using exceptions to report errors, allowing structured error handling and recovery.
  • RAII for Exception Safety: Resource management via RAII ensures resources are released even when exceptions occur, preventing leaks.
  • Exception Safety Guarantees: Stroustrup distinguishes between basic, strong, and nothrow guarantees, encouraging designs that maintain valid program states during exceptions.
  • Minimize Try-blocks: He recommends keeping try-blocks minimal and catching exceptions by reference, letting main() handle uncaught exceptions for program stability.

12. How does "The C++ Programming Language" by Bjarne Stroustrup address compatibility with C and best practices for modern C++?

  • C++ as a Superset: The book explains that C++ is mostly a superset of C, but with stronger type checking and some incompatibilities.
  • Porting and Coexistence: It provides advice for porting code, using extern "C" for interoperability, and writing in the common subset when needed.
  • Avoid Deprecated Features: Stroustrup warns against using deprecated features like auto_ptr and C++98 exception specifications, recommending modern alternatives.
  • Embrace Modern C++: The book encourages using standard containers, smart pointers, and language features for safer, more maintainable, and portable code.

Über den Autor

Bjarne Stroustrup ist ein dänischer Informatiker, der vor allem als Schöpfer der Programmiersprache C++ bekannt ist. Er entwickelte C++ im Jahr 1979 bei Bell Labs mit dem Ziel, die Sprache C um Funktionen für die Programmierung größerer Systeme zu erweitern. Stroustrup spielte eine entscheidende Rolle bei der Weiterentwicklung der Sprache, verfasste mehrere Auflagen seines Standardwerks „The C++ Programming Language“ und trug maßgeblich zur ISO-C++-Norm bei. Für seine Arbeit wurde er mit zahlreichen Auszeichnungen geehrt, darunter der Computer Entrepreneur Award der IEEE Computer Society. Stroustrup hatte Lehrstühle an der Texas A&M University und der Columbia University inne und prägt bis heute das Fachgebiet der Informatik sowie das Design von Programmiersprachen.

PDF herunterladen

To save this Die C++-Programmiersprache summary for later, download the free PDF. You can print it out, or read offline at your convenience.
Download PDF

EPUB herunterladen

To read this Die C++-Programmiersprache summary on your e-reader device or app, download the free EPUB. The .epub digital book format is ideal for reading ebooks on phones, tablets, and e-readers.
Download EPUB
Want to read the full book?
Follow
Anhören14 Min.
Now playing
Die C++-Programmiersprache
0:00
-0:00
Now playing
Die C++-Programmiersprache
0:00
-0:00
1x
Queue
Home
Swipe
Library
Get App
Try Full Access for 3 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
Read unlimited summaries. Free users get 3 per month
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 4
📜 Unlimited History
Free users are limited to 4
📥 Unlimited Downloads
Free users are limited to 1
Risk-Free Timeline
Heute: Sofortzugang erhalten
Vollständige Zusammenfassungen von über 26.000 Büchern anhören. Das sind über 12.000 Stunden Audio!
Tag 2: Erinnerung an Testphase
Wir senden Ihnen eine Benachrichtigung, dass Ihre Testphase bald endet.
Tag 3: Ihr Abonnement beginnt
Die Abbuchung erfolgt am Jul 4,
vorher jederzeit kündbar.
Consume 2.8× More Books
2.8× more books Listening Reading
Our users love us
600,000+ readers
Trustpilot Rating
TrustPilot
4.6 Excellent
This site is a total game-changer. I've been flying through book summaries like never before. Highly, highly recommend.
— Dave G
Worth my money and time, and really well made. I've never seen this quality of summaries on other websites. Very helpful!
— Em
Highly recommended!! Fantastic service. Perfect for those that want a little more than a teaser but not all the intricate details of a full audio book.
— Greg M
Save 62%
Yearly
$119.88 $44.99/year/yr
$3.75/mo
Monthly
$9.99/mo
Start a 3-Day Free Trial
3 days free, then $44.99/year. Cancel anytime.
Unlock a world of fiction & nonfiction books
26,000+ books for the price of 2 books
Read any book in 10 minutes
Discover new books like Tinder
Request any book if it's not summarized
Read more books than anyone you know
#1 app for book lovers
Lifelike & immersive summaries
30-day money-back guarantee
Download summaries in EPUBs or PDFs
Cancel anytime in a few clicks
Scanner
Find a barcode to scan

We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel
Settings
General
Widget
Loading...
We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel