Skip to main content

2018 | Buch

C++ mit Visual Studio 2017

Ein Fach- und Lehrbuch für Standard-C++

verfasst von: Prof. Richard Kaiser

Verlag: Springer Berlin Heidelberg

Buchreihe : Xpert.press

insite
SUCHEN

Ü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
Zusammenfassung
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
Zusammenfassung
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.
Zusammenfassung
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
Zusammenfassung
Bisher haben wir alle Variablen einzeln definiert.
Richard Kaiser
Kapitel 5. Einfache selbstdefinierte Datentypen
Zusammenfassung
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
Zusammenfassung
In den bisherigen Ausführungen wurden Speicherbereiche im Hauptspeicher immer über Variablen und ihre Namen angesprochen.
Richard Kaiser
Kapitel 7. Überladene Funktionen und Operatoren
Zusammenfassung
Mit Funktionen können Anweisungen unter einem eigenen Namen zusammengefasst und unter diesem Namen wieder aufgerufen werden.
Richard Kaiser
Kapitel 8. Objektorientierte Programmierung
Zusammenfassung
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
Zusammenfassung
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
Zusammenfassung
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
Zusammenfassung
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
Zusammenfassung
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
Zusammenfassung
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
Zusammenfassung
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
Zusammenfassung
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
Zusammenfassung
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
Zusammenfassung
Mit der seit C++11 nach
#include <thread> // ab VS 2012
im 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
Zusammenfassung
Die Arbeit mit Zeigern auf dynamisch erzeugte Speicherbereiche ist oft fehleranfällig.
Richard Kaiser
Erratum zu: C++ mit Visual Studio 2017
Zusammenfassung
Das Copyrightjahr der Originalversion wurde von 2019 zu 2018 geändert; der Copyright Holder zu: Springer-Verlag GmbH Deutschland. Die Originalversion wurde korrigiert.
Richard Kaiser
Backmatter
Metadaten
Titel
C++ mit Visual Studio 2017
verfasst von
Prof. Richard Kaiser
Copyright-Jahr
2018
Verlag
Springer Berlin Heidelberg
Electronic ISBN
978-3-662-49793-7
Print ISBN
978-3-662-49792-0
DOI
https://doi.org/10.1007/978-3-662-49793-7