Skip to main content
main-content

2022 | Buch

C++ mit Visual Studio 2022 und Windows Forms-Anwendungen

C++17 für Studierende und erfahrene Programmierer – Windows-Programme mit C++ entwickeln

verfasst von: Richard Kaiser

Verlag: Springer Berlin Heidelberg

Buchreihe: Xpert.press

share
TEILEN
insite
SUCHEN

Über dieses Buch

Dieses Buch stellt C++ umfassend dar. Zahlreiche Beispiele veranschaulichen die Theorie. Dabei werden die Neuerungen von C++11, C++14 und C++17 von Anfang an integriert und ihre Vorteile gezeigt. Im Unterschied zu den allermeisten anderen C++-Büchern werden Windows-Programme mit einer grafischen Benutzeroberfläche entwickelt.

Dieses Buch ist ein Lehrbuch, das sich an Studenten von Fachhochschulen und Universitäten richtet. Da es keine Vorkenntnisse voraussetzt, ist es auch zum Selbststudium geeignet. Es entstand aus zahlreichen Vorlesungen und Firmenseminaren. Der Aufbau, die Beispiele und Übungsaufgaben sind erprobt und bewährt.

Und es ist gleichzeitig auch ein Fachbuch, das erfahrene C++-Programmierer auf den Stand von C++17 bringt. Es zeigt, wie die zahlreichen Neuerungen selbst elementare Programmiertechniken einfacher und sicherer machen. Dazu kommen neue Konzepte, die bessere und effizientere Lösungen als noch vor einigen Jahren ermöglichen. Viele dieser neuen Möglichkeiten sind in der industriellen Praxis noch nicht verbreitet.

Übungsaufgaben ermöglichen dem Leser, das Gelernte zu vertiefen. Lösungen stehen auf www.rkaiser.de zum Download bereit.

Dieses Buch erscheint in zwei weitgehend identischen Ausgaben:

• In der vorliegenden Ausgabe werden Programme mit einer grafischen Benutzeroberfläche geschrieben, in denen alle Ein- und Aus-gaben über eine Windows-Benutzeroberfläche erfolgen.

• In der anderen Ausgabe „C++ mit Visual Studio 2019“ (ISBN 978-3-662-594759) werden C++-Programme ohne eine grafische Benutzeroberfläche geschrieben. Alle Ein- und Ausgaben erfolgen mit cin und cout über die Konsole.

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. Steuerelemente für die Benutzeroberfläche
Zusammenfassung
Dieses Kapitel gibt einen Überblick über die wichtigsten Steuerelemente (Bedienelemente) für die Benutzeroberfläche von Windows-Programmen: Sie zeigen dem Anwender Informationen an oder nehmen Anweisungen und Informationen von ihm entgegen.
Richard Kaiser
Kapitel 3. Elementare Datentypen und Anweisungen
Zusammenfassung
Nachdem in den letzten beiden Kapiteln gezeigt wurde, wie man mit der Entwicklungsumgebung Visual Studio arbeitet, beginnen wir in diesem Kapitel mit der Vorstellung der Sprachelemente von C++.
Richard Kaiser
Kapitel 4. Die Stringklassen: string, wstring usw.
Zusammenfassung
In C und auch in vielen C++-Programmen werden Strings traditionellerweise mit nullterminierten Strings (Datentyp char*, siehe Abschnitt 7.6) 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 5. Arrays und Container
Zusammenfassung
Bisher haben wir alle Variablen einzeln definiert. Das kann aber ziemlich aufwendig werden, wenn man eine größere Anzahl von Variablen benötigt.
Richard Kaiser
Kapitel 6. Einfache selbstdefinierte Datentypen
Zusammenfassung
Selbstdefinierte Datentypen werden normalerweise mit Klassen definiert. Das ist allerdings ein umfangreiches Thema (siehe Kapitel 9). Damit auch schon vor Kapitel 9 einfache selbstdefinierte Datentypen verwendet werden können, werden hier einige einfache Grundbegriffe im Zusammenhang mit sogenannten Strukturen und Aufzählungstypen betrachtet.
Richard Kaiser
Kapitel 7. Zeiger, dynamisch erzeugte Variablen und smart pointer
Zusammenfassung
In den bisherigen Ausführungen wurden Speicherbereiche im Hauptspeicher immer über Variablen und ihre Namen angesprochen. Durch eine Definition wie
int x;
ordnet der Compiler der Variablen x einen Speicherbereich zu (4 Bytes bei 32-bit int-Werten). Dieser Bereich wird unter dem Namen x als int-Wert angesprochen.
Richard Kaiser
Kapitel 8. Überladene Funktionen und Operatoren
Zusammenfassung
Mit Funktionen können Anweisungen unter einem eigenen Namen zusammengefasst und unter diesem Namen wieder aufgerufen werden. Dieses einfache Konzept hat viele Vorteile.
Richard Kaiser
Kapitel 9. Objektorientierte Programmierung
Zusammenfassung
Bis ca. 1975 waren vordefinierte Datentypen wie int und double die überwiegend verwendeten Datentypen. Im Lauf der Zeit hat sich dann aber die Überzeugung durchgesetzt, dass bei komplexeren Aufgaben problemangemessene Datentypen besser sind. Da der Datentyp einer Variablen festlegt, welche Operationen mit dieser Variablen 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 10. 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 11. 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 12. Containerklassen der C++-Standardbibliothek
Zusammenfassung
Zum C++-Standard gehört eine umfangreiche Standardbibliothek. Fast 1400 der 1850 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 13. 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. Will man Daten über die Laufzeit eines Programms hinaus erhalten, müssen sie auf sogenannten externen Datenträgern gespeichert werden. Das sind meist Magnetplatten (Festplatten), Magnetbänder, Speicherchips, optische Speichermedien (CD-ROMs, DVDs usw.) oder einfach Papier, auf dem Daten ausgedruckt werden.
Richard Kaiser
Kapitel 14. 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 15. 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 werden auch als generische Funktionen bzw. Klassen, Schablonen oder Vorlagen bezeichnet.
Richard Kaiser
Kapitel 16. STL-Algorithmen und Lambda-Ausdrücke
Zusammenfassung
Die Standardbibliothek enthält über 100 Algorithmen für viele Aufgaben, die vor allem bei der Arbeit mit Containern immer wieder anfallen. Sie stehen nach
#include <algorithm>
im Namensbereich std zur Verfügung. Diese Algorithmen sind Funktions-Templates, denen oft Iteratoren und Operationen als Argumente übergeben werden. Da Iteratoren Bereiche in Containern der STL, in Arrays und in Dateien beschreiben können, kann man diese Algorithmen mit vielen Containern fast beliebiger Elementtypen aufrufen. Die Operationen, die ein Algorithmus mit den Elementen eines Containers durchführt, werden oft als Lambda-Ausdruck übergeben. Deshalb kann ein Algorithmus nahezu beliebige Anweisungen ausführen.
Richard Kaiser
Kapitel 17. 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.
Richard Kaiser
Kapitel 18. Multithreading
Zusammenfassung
Mit der seit C++11 in Standard C++ und seit Visual Studio 2019 in Windows Forms Projekten nach
#include <thread> // seit Visual Studio 2019 für Windows Form möglich
im Namensbereich std verfügbaren Klasse thread 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 19. Smart Pointer: shared_ptr, unique_ptr und weak_ptr
Zusammenfassung
Die Arbeit mit Zeigern auf dynamisch erzeugte Speicherbereiche ist oft fehleranfällig.
Richard Kaiser
Kapitel 20. C++/CLI, .NET-Bibliotheken und C++ Interoperabilität
Zusammenfassung
Da ich immer mal wieder gefragt werde, ob und wie man C++ in Verbindung mit C#, .NET Framework und .NET verwenden kann, hier eine kurze Einführung.
Richard Kaiser
Backmatter
Metadaten
Titel
C++ mit Visual Studio 2022 und Windows Forms-Anwendungen
verfasst von
Richard Kaiser
Copyright-Jahr
2022
Verlag
Springer Berlin Heidelberg
Electronic ISBN
978-3-662-65257-2
Print ISBN
978-3-662-65256-5
DOI
https://doi.org/10.1007/978-3-662-65257-2

Premium Partner