Skip to main content
main-content

Über dieses Buch

Dieses Buch stellt C++ umfassend dar. Es ist ein Lehrbuch, das keine Vorkenntnisse voraussetzt. Die C++11/14-Erweiterungen sind von Anfang an integriert. Und es ist ein Fachbuch, das erfahrene C++-Programmierer auf den neuesten Stand bringt. Es zeigt die zahlreichen Neuerungen gegenüber früheren Versionen von C++ und Visual Studio. Viele Beispiele illustrieren, wie man diese vorteilhaft einsetzen kann. Die Inhalte sind in zahlreichen Vorlesungen und Industrieseminaren erprobt. Übungsaufgaben (mit Lösungen auf der Homepage des Autors) ermöglichen dem Leser, das Gelernte zu vertiefen.

Dieses Buch erscheint in zwei weitgehend identischen Ausgaben:

In der vorliegenden Ausgabe werden reine Standard-C++-Programme geschrieben, d.h. ohne grafische Benutzeroberfläche. Alle Ein- und Ausgaben erfolgen über die Konsole.In der weiteren Ausgabe „C++ mit Visual Studio 2017 und Windows Forms-Anwendungen“ (ISBN 978-3-662-49790-6) werden Programme mit einer grafischen Benutzeroberfläche geschrieben. Alle Ein- und Ausgaben erfolgen über eine Windows-Benutzeroberfläche. Diese Programme sehen etwas ansprechender aus als Konsolenprogramme. Das kann Anfängern den Einstieg erleichtern.

Inhaltsverzeichnis

Frontmatter

Kapitel 1. Die Entwicklungsumgebung

Visual Studio besteht aus verschiedenen Werkzeugen (Tools), die einen Programmierer bei der Entwicklung von Software unterstützen. Eine solche Zusammenstellung von Werkzeugen zur Softwareentwicklung bezeichnet man auch als Programmier- oder Entwicklungsumgebung.

Richard Kaiser

Kapitel 2. Elementare Datentypen und Anweisungen

Nachdem im letzten Kapitel gezeigt wurde, wie man mit der Entwicklungsumgebung Visual Studio arbeitet, beginnen wir jetzt mit der Vorstellung der Sprachelemente von C++.

Richard Kaiser

Kapitel 3. Die Stringklassen: string, wstring usw.

In C und auch in vielen C++-Programmen werden Strings traditionellerweise mit nullterminierten Strings (Datentyp char*, siehe Abschnitt 6.10) dargestellt. Allerdings ist die Arbeit damit ziemlich umständlich und fehleranfällig. So kann man einen nullterminierten String nicht einfach mit dem Zuweisungsoperator „=“ auf einen anderen kopieren, und bei Funktionen wie strcpy muss man immer darauf achten, dass die Quelle auf einen nullterminierten String zeigt und im Zielbereich genügend Speicher reserviert ist.

Richard Kaiser

Kapitel 4. Arrays und Container

Bisher haben wir alle Variablen einzeln definiert.

Richard Kaiser

Kapitel 5. Einfache selbstdefinierte Datentypen

Selbstdefinierte Datentypen werden normalerweise mit Klassen definiert. Das ist allerdings ein umfangreiches Thema (siehe Kapitel 8). Damit auch schon vor Kapitel 8 einfache selbstdefinierte Datentypen verwendet werden können, werden hier einige einfache Grundbegriffe im Zusammenhang mit sogenannten Strukturen und Aufzählungstypen betrachtet.

Richard Kaiser

Kapitel 6. Zeiger, Strings und dynamisch erzeugte Variablen

In den bisherigen Ausführungen wurden Speicherbereiche im Hauptspeicher immer über Variablen und ihre Namen angesprochen.

Richard Kaiser

Kapitel 7. Überladene Funktionen und Operatoren

Mit Funktionen können Anweisungen unter einem eigenen Namen zusammengefasst und unter diesem Namen wieder aufgerufen werden.

Richard Kaiser

Kapitel 8. Objektorientierte Programmierung

Bisher haben wir vor allem mit elementaren Datentypen wie int, double usw. gearbeitet. In den letzten 30 Jahren hat sich aber gezeigt, dass es bei komplexeren Aufgaben sehr hilfreich sein kann, problemangemessene Datentypen zu haben. Da der Datentyp festlegt, welche Operationen mit einer Variablen des Datentyps möglich sind, bietet ein problemangemessener Datentyp im Idealfall genau die Operationen, die für die Lösung des anstehenden Problems hilfreich sind.

Richard Kaiser

Kapitel 9. Namensbereiche

Große Programme oder Bibliotheken können viele Namen enthalten. Dann kann es leicht vorkommen, dass derselbe Name für verschiedene globale Bezeichner (z.B. Namen für Datentypen, Klassen, Funktionen usw.) benötigt wird.

Richard Kaiser

Kapitel 10. Exception-Handling

Die üblichen Kontrollstrukturen (if, while usw.) sind für die Steuerung eines normalen Programmablaufs angemessen und ausreichend. Sie führen allerdings schnell zu unübersichtlichen Programmstrukturen, wenn man damit Fehler abfangen will.

Richard Kaiser

Kapitel 11. Containerklassen der C++-Standardbibliothek

Zum C++-Standard gehört eine umfangreiche Standardbibliothek. Fast 1000 der 1400 Seiten dieses Standards befassen sich allein mit dieser Bibliothek. Derjenige Teil der Standardbibliothek, der Container und Algorithmen umfasst, wird auch als Standard Template Library (STL) bezeichnet.

Richard Kaiser

Kapitel 12. Dateibearbeitung mit den Stream-Klassen

Daten in einem Programm wurden bisher vor allem in Variablen dargestellt. Diese Variablen stellen Speicherbereiche im Hauptspeicher des Rechners dar, deren Reservierung am Ende des Programms wieder aufgehoben wird. Deshalb kann man danach nicht mehr auf die Daten zugreifen.

Richard Kaiser

Kapitel 13. Funktoren, Funktionsobjekte und Lambda-Ausdrücke

Eine Klasse mit einem Aufrufoperator wird auch als Funktor bezeichnet, und ein Objekt einer solchen Klasse als Funktionsobjekt. Funktionsobjekte können wie Funktionen verwendet werden. Sie bieten aber zusätzliche Möglichkeiten und können oft einfacher als gewöhnliche Funktionen verwendet werden. Funktoren und Funktionsobjekte spielen in C++ und der Standardbibliothek eine große Rolle.

Richard Kaiser

Kapitel 14. Templates

Templates sind Vorlagen für Funktionen oder Klassen, denen man als Parameter Datentypen übergeben kann. Aus einem Template und einem Argument für den Datentyp eines Parameters erzeugt der Compiler dann eine Funktion oder Klasse, die anstelle des Parameters das Argument als Datentyp enthält. Die Verwendung von Datentypen als Parameter bezeichnet man auch als generische Programmierung, und Templates auch als generische Funktionen bzw. Klassen, Schablonen oder Vorlagen.

Richard Kaiser

Kapitel 15. STL-Algorithmen und Lambda-Ausdrücke

Die STL enthält über 100 Algorithmen für viele Aufgaben, die vor allem bei der Arbeit mit Containern immer wieder anfallen.

Richard Kaiser

Kapitel 16. Zeiten und Kalenderdaten mit chrono

Seit C++11 steht in C++ nach#include <chrono>eine leistungsfähige Bibliothek für Zeitpunkte (z.B. Uhrzeiten), Zeiträume (z.B. 5 Sekunden) und Uhren zur Verfügung. Mit dieser Bibliothek kann man z.B. die aktuelle Uhrzeit anzeigen oder die Dauer der Ausführung von Anweisungen messen. Im Zusammenhang mit Multithreading (siehe Kapitel 17) wird sie benötigt, um ein Programm bzw.

Richard Kaiser

Kapitel 17. Multithreading

Mit der seit C++11 nach#include <thread> // ab VS 2012im Namensbereich std verfügbaren Klasse thread sowie dem Funktions-Template async kann man Funktionen als eigene Threads starten. Damit werden die Funktionen quasi-parallel auf verschiedenen Prozessoren bzw. Kernen eines Prozessors ausgeführt. Startet man mehrere Funktionen eines Programms als Thread, spricht man auch von Multithreading.

Richard Kaiser

Kapitel 18. C++11 Smart Pointer: shared_ptr, unique_ptr und weak_ptr

Die Arbeit mit Zeigern auf dynamisch erzeugte Speicherbereiche ist oft fehleranfällig.

Richard Kaiser

Erratum zu: C++ mit Visual Studio 2017

Das Copyrightjahr der Originalversion wurde von 2019 zu 2018 geändert. Die Originalversion wurde korrigiert.

Richard Kaiser

Backmatter

Weitere Informationen

Premium Partner

Neuer Inhalt

BranchenIndex Online

Die B2B-Firmensuche für Industrie und Wirtschaft: Kostenfrei in Firmenprofilen nach Lieferanten, Herstellern, Dienstleistern und Händlern recherchieren.

Whitepaper

- ANZEIGE -

Best Practices für die Mitarbeiter-Partizipation in der Produktentwicklung

Unternehmen haben das Innovationspotenzial der eigenen Mitarbeiter auch außerhalb der F&E-Abteilung erkannt. Viele Initiativen zur Partizipation scheitern in der Praxis jedoch häufig. Lesen Sie hier  - basierend auf einer qualitativ-explorativen Expertenstudie - mehr über die wesentlichen Problemfelder der mitarbeiterzentrierten Produktentwicklung und profitieren Sie von konkreten Handlungsempfehlungen aus der Praxis.
Jetzt gratis downloaden!

Bildnachweise