http://www.pronix.de -> Bücher -> Bücher aus meiner Feder -> C++ von A bis Z -> Inhaltsverzeichnis

Inhaltsverzeichnis

1          Grundlagen in C++
1.1       Die Entstehung von C++
1.1.1    Aufbau von C++
Erweiterungen von C
Objektorientierte Unterstützung
Stärken von C++
Schwächen von C++
Vergleich mit anderen Sprachen
1.2       Erste Schritte der C++-Programmierung
1.2.1    Ein Programm erzeugen mit einem Kommandozeilen-Compiler
GNU-g++-Compiler
Microsoft Visual C++ (Kommandozeile)
Borlands Free Command Line Tools
1.2.2            Ausführen des Programms
1.2.3    Ein Programm erzeugen mit einer IDE
1.3            Symbole von C++
1.3.1            Bezeichner
1.3.2            Schlüsselwörter
1.3.3            Literale
Ganzzahlen
Fließkommazahlen
Einzelne Zeichen
Zeichenketten
1.3.4            Einfache Begrenzer
Das Semikolon (;)
Komma
Geschweifte Klammern
Das Gleichheitszeichen (=)
1.4            Basisdatentypen
1.4.1            Deklaration und Definition
1.4.2    Was ist eine Variable?
1.4.3    Der Datentyp bool
1.4.4    Der Datentyp char
Breite Zeichen - wchar_t
1.4.5    Die Datentypen int
Die int-Typen long und short
signed und unsigned
1.4.6            Gleitkommazahlen float, double und long double
Rechnen mit Gleitkommazahlen(?)
1.4.7    Limits für Ganzzahl- und Gleitpunktdatentypen
1.5            Konstanten
1.6            Standard Ein-/Ausgabe-Streams
1.6.1    Die neuen Streams - cout, cin, cerr, clog
1.6.2            Ausgabe mit cout
1.6.3            Ausgabe mit cerr
1.6.4            Eingabe mit cin
Einlesen von Zeichen und Zeichenkette
1.7            Operatoren
1.7.1            Arithmetische Operatoren
1.7.2            Inkrement- und Dekrement-Operator
1.7.3    Bit-Operatoren
Bitweises UND
Bitweises ODER
Bitweises XOR
Bitweises Komplement
Links- bzw. Rechtsverschiebung
1.7.4            Weitere Operatoren
1.8            Kommentare
1.9            Kontrollstrukturen
1.9.1            Verzweigungen (Selektionen)
Die if ... else-Anweisung
Vergleichsoperatoren
Bedingungsoperator ?:
Logische Operatoren
Die switch-Anweisung
1.9.2            Schleifen (Iterationen)
Die while-Anweisung
Die do ... while-Anweisung
Die for-Anweisung
1.9.3            Sprunganweisungen
Die break-Anweisung
Die continue-Anweisung
1.10            Funktionen
1.10.1            Deklaration und Definition
1.10.2            Funktionsaufruf und Parameterübergabe
Parameterübergabe an Funktionen (call-by-value)
Rückgabewert von Funktionen
1.10.3  Lokale und Globale Variablen
1.10.4            Standardparameter
1.10.5            Funktionen überladen
1.10.6  Inline-Funktionen
1.10.7            Rekursionen
1.10.8  main-Funktion
1.11            Präprozessor-Direktiven
1.11.1  Die #define-Direktive
#define oder const
Inline-Funktionen oder Parameterisierte Makros
1.11.2  Die #undef-Direktive
1.11.3  Die #include-Direktive
1.11.4  Die Direktiven #error und #pragma
1.11.5            Bedingte Kompilierung

2          Höhere und Fortgeschrittene Datentypen
2.1       Zeiger
2.1.1    Zeiger deklarieren
2.1.2            Adresse im Zeiger speichern
2.1.3    Zeiger dereferenzieren
2.1.4    Zeiger, die auf andere Zeiger verweisen
2.1.5            Dynamisch Speicherobjekte anlegen und zerstören - new und delete
new - Dynamische Objekte anlegen
delete - Dynamische Objekte zerstören
2.1.6    void-Zeiger
2.1.7            Konstante Zeiger
2.2            Referenzen
2.3       Arrays
2.3.1    Arrays deklarieren
2.3.2    Arrays initialisieren
2.3.3            Bereichsüberschreitung von Arrays
2.3.4    Anzahl der Elemente eines Arrays ermitteln
2.3.5    Array-Wert von Tastatur einlesen
2.3.6            Mehrdimensionale Arrays
2.4            Zeichenketten (C-Strings) - char-Array
2.4.1    C-String deklarieren und initialisieren
2.4.2    C-String einlesen
2.4.3    C-Strings Bibliotheksfunktionen
2.5       Arrays und Zeiger
2.5.1    C-Strings und Zeiger
2.5.2            Mehrfache Indirektion
2.5.3    C-String-Tabellen
2.5.4    Arrays im Heap (Dynamisches Array)
Zweidimensionale dynamische Arrays
2.6            Parameterübergabe mit Zeiger, Arrays und Referenzen
2.6.1    Call by value
2.6.2    Call by reference - Zeiger als Funktionsparameter
2.6.3    Call by reference mit Referenzen nachbilden
2.6.4    Arrays als Funktionsparameter
2.6.5            Mehrdimensionale Arrays an Funktionen übergeben
2.6.6            Argumente an die main-Funktion übergeben
2.7            Rückgabewerte von Zeiger, Arrays und Referenzen
2.7.1    Zeiger als Rückgabewert
2.7.2            Referenz als Rückgabewert
2.7.3    const-Zeiger als Rückgabewert
2.7.4    Array als Rückgabewert
2.7.5            Mehrere Rückgabewerte
2.8            Fortgeschrittene Typen
2.8.1            Strukturen
Strukturen deklarieren
Zugriff auf die Struktur-Mitglieder
Parameterübergabe mit Strukturen an Funktionen
Rückgabewert von Strukturen aus Funktionen
Vergleichen von Strukturen
Arrays von Strukturen
Strukturen in Strukturen
Exkurs: Verkettete Listen
Verkettete Listen oder Arrays
Die Daten (Der Knoten)
Der Anfang der Liste  (Der Anker)
Das Ende der Liste
Ein einfaches Beispiel
Doppelt verkettete Listen
Bitfelder (gepackte Strukturen)
2.8.2    Unions
2.8.3            Auzählungstypen
2.8.4    typedef

3          Gültigkeitsbereiche, spezielle Deklarationen und Typenumwandlungen
3.1            Gültigkeitsbereiche (Scope)
3.1.1    Lokaler Gültigkeitsbereich (Local Scope)
3.1.2            Gültigkeitsbereich Funktionen
3.1.3            Gültigkeitsbereich Namenraum (Namespaces)
3.1.4            Gültigkeitsbereich Klassen (Class Scope)
3.2            Namensräume (Namespaces)
3.2.1    Neuen Namensbereich erzeugen (Definition)
3.2.2    Zugriff auf die Bezeichner im Namensraum
3.2.3    using - Einzelne Bezeichner aus einem Namensraum importieren
3.2.4    using - Alle Bezeichner aus einem Namensraum importieren
3.2.5            Namensauflösung
3.2.6            Aliasnamen für Namensbereiche
3.2.7            Anonyme (namenlose) Namensbereiche
3.2.8            Namensbereich und Headerdateien
3.3       C-Funktionen bzw. Bibliotheken in einem C++-Programm
3.3.1    C-Funktionen aus einer C-Bibliothek aufrufen
3.4            Speicherklassenattribute
3.4.1            Speicherklasse auto
3.4.2            Speicherklasse register
3.4.3            Speicherklasse static
3.4.4            Speicherklasse extern
3.4.5            Speicherklasse mutable
3.5            Typenqualifikatoren
3.5.1            Qualifizierer const
3.5.2            Qualifizierer volatile
3.6            Funktionsattribute
3.7            Typenumwandlung
3.7.1            Standard-Typenumwandlung
Integral- Promotion
Gleitkomma-Promotion
Integral-Typenumwandlung
Gleitkomma-Typenumwandlung
Integral-Gleitkomma-Typenumwandlung
Bool-Typenumwandlung
Zeiger- und Basisklassen-Typenumwandlung
3.7.2            Explizite Typenumwandlung
Typenumwandlung mit dem C-Casts
Neue C++-Typenuwandlungs-Operatoren
const_cast<TYP> - Typenuwandlung
static_cast<TYP> - Typenumwandlung
reinterpret_cast<TYP> - Typenumwandlung
dynamic_cast<TYP> - Typenumwandlung

4          Objektorientierte Programmierung
4.1       OOP-Konzept versus prozedurales Konzept
4.1.1    OOP-Paradigmen
4.2            Klassen (fortgeschrittene Typen)
4.2.1            Klassen deklarieren
4.2.2            Elementfunktion (Klassenmethode) definieren
4.2.3            Objekte deklarieren
4.2.4    Kurze Zusammenfassung
4.2.5    private und public - Zugriffsrechte in der Klasse
4.2.6    Zugriff auf die Elemente (Member) einer Klasse
Direkter Zugriff mit dem Punkteoperator
Indirekter Zugriff mit dem Pfeiloperator
4.2.7    Ein Programm organisieren
4.2.8            Konstruktoren
Konstruktoren deklarieren
Konstruktoren definieren
Konstruktoren aufrufen
Standard-Konstruktor
4.2.9            Destruktoren
Destruktor deklarieren
Destruktor definieren
Destruktor aufrufen (implizit)
4.3       Mehr zu den Klassenmethoden (Klassenfunktionen)
4.3.1    Inline-Methoden (explizit und implizit)
Inline implizit
Inline explizit
inline Konstruktoren und Destruktoren
4.3.2            Zugriffsmethoden
4.3.3    Read-only-Methoden
4.3.4    this-Zeiger
this-> und *this
4.4            Verwenden von Objekten
4.4.1    Read-only-Objekte
4.4.2            Objekte als Funktionsargumente
call by value
call by refernce
Referenzen auf Objekte
Klassenmethoden mit Objekten als Argumente
*this zum Zweiten ...
4.4.3            Objekte als Rückgabewert
4.4.4            Klassen-Array (Array von Objekten)
Deklarieren
Initialisieren
Zugriff auf Klassenelemente
4.4.5            Dynamische Objekte
Objekt dynamisch anlegen
Speicher freigeben
Kein Speicherplatz mehr vorhanden
Fehler-Handle von new
4.4.6            Dynamische Klassenelemente
4.4.7            Objekte kopieren (Kopier-Konstruktor)
4.4.8            Dynamische erzeugte Objekte kopieren (operator=())
4.4.9            Standard-Methoden (Überblick)
4.4.10  Objekt als Element (bzw. Eigenschaft) in anderen Klassen
4.4.11            Teilobjekte initialisieren
4.4.12            Klassen in Klassen verschachteln
4.4.13            Konstante Klasseneigenschaften (Datenelemente)
4.4.14            Statische Klasseneigenschaften (Datenelemente)
4.4.15            Statische Klassenmethoden
4.4.16  friend-Funktionen bzw. friend-Klassen
4.4.17  Zeiger auf Eigenschaften einer Klasse
4.5            Operatoren überladen
4.5.1            Grundlegendes zur Operator-Überladung
Schlüsselwort operator
Die Regeln
Die Beispiele zu Demonstrationszwecken
4.5.2            Überladen von arithmetischen Operatoren
Operator-Überladung als Klassenmethode
Operator-Überladung als globale (friend-)Funktion
Vergleich der Implementierungen der Operator-Überladung
4.5.3            Überladen von unären Operatoren
4.5.4            Überladen von ++ und --
4.5.5            Überladen des Zuweisungs-Operator
Zuweisung von Objekten verhindern
4.5.6            Überladen des Indexoperators [] (Arrays überladen)
4.5.7    Shift-Operatoren überladen
4.5.8    ()-Operator überladen
4.5.9    new- und delete-Operator überladen
Überladen von new
Überladen von delete
Überladen von new[] und delete[]
Globale Überladung
Klassenspezifische Überladung
4.6            Typenumwandlung für Klassen
4.6.1            Konvertierungskonstruktor
4.6.2            Konvertierungsfunktion
4.7            Vererbung (Abgeleitete Klassen)
4.7.1            Anwendungsbeispiel (Die Vorbereitung)
4.7.2    Die Ableitung einer Klasse
public-Zugriffsrechte für eine abgeleitete Klasse
Erbschaft und Erweiterung
Zugriff auf die Elemente (der Basisklasse)
4.7.3            Redefinition von Klassenelementen
4.7.4            Konstruktoren
Default-Konstruktor
Basisinitialisierer
Elementinitialisierer
4.7.5            Destruktoren
4.7.6            Zugriffsrecht protected
Vererbung (public, private und protected)
4.7.7            Typenumwandlung abgeleiteter Klassen
Explizite Typenumwandlung
4.7.8            Klassenbibliotheken erweitern
4.8            Polymorphismus
4.8.1            Statische bzw. dynamische Bindung
4.8.2            Virtuelle Methoden
4.8.3            Virtuelle Methoden redefinieren
Signatur
Rückgabewert
Zugriffsrechte
4.8.4            Arbeitsweise von virtuellen Methoden
Nachteile der dynamischen Bindung
4.8.5            Virtuelle Destruktoren bzw. Destruktoren abgeleiteter Klassen
Virtuelle Konstruktoren?
4.8.6            Polymorphismus und der Zuweisungsoperator
4.8.7    Rein virtuelle Methoden und abstrakte Basisklassen
Abstrakte Klassen
Konstruktoren abstrakter Klassen
Zuweisungsoperator und Kopierkonstruktor abstrakter Klassen
4.8.8            Probleme mit der Vererbung und der dynamic_cast-Operator
4.8.9            Fallbeispiel : Verkettete Listen
Die einzelnen Klassen (Komponenten)
Das komplette Listing
Zusammengefasst
4.9            Mehrfachvererbung
4.9.1            Indirekte Basisklassen erben
4.9.2            Virtuelle indirekte Basisklasse erben
Reihenfolge bei der Erzeugung der Objekte
 
5          Templates und STL
5.1            Funktions-Templates
5.1.1            Funktions-Template definieren
5.1.2            Typenübereinstimmung
5.1.3            Funktions-Template über mehrere Module
5.1.4            Spezialisierung von Funktion-Templates
5.1.5            Verschiedene Parameter
5.1.6            Explizite Template-Argumente
5.2            Klassen-Templates
5.2.1            Definition
5.2.2            Methoden von Klassen-Templates definieren
5.2.3            Klassen-Template generieren (Instantiierung)
5.2.4            Weitere Template-Parameter
5.2.5            Standard-Argumente von Templates
5.2.6            Explizite Instantiierung
5.3       STL (Standard Template Library)
5.3.1            Konzept von STL
Container
Iteratoren
Algorithmen
5.3.2            Hilfsmittel (Hilfstrukturen)
pair
pair-Basisdatentypen
pair-Objekte
Zugriff auf pair-Elemente
pair als Rückgabewert von Funktionen
Vergleichsoperatoren
Funktionsobjekte
Funktionsadapter
not1, not2
bind1st, bind2nd
ptr_fun
5.3.3            Allokator
5.3.4            Iteratoren
Zustände von Iteratoren
Kategorien von Iteratoren
Einfüge-Iteratoren
Stream-Iterator
Distanzen (Iterator-Funktionen)
5.3.5            Container
Datentypen
Methoden
Sequentielle Container
Laufzeitklassen
Worst case, Best case und Average case
Die Container-Klasse vector
Die Container-Klasse list
Die Container-Klasse deque
Abstrakte Container (Adapter-Klassen)
Die Container-Klasse stack
Die Container-Klasse queue
Die Container-Klasse priority_queue
Assoziative Container
Die Container-Klasse set und multiset
Die Container-Klasse map und multimap
Weitere und zukünftige STL-Container-Klassen
5.3.6            Algorithmen
Algorithmen mit Prädikat
Nicht-verändernde Sequenz-Algorithmen
Verändernde Sequenz-Algorithmen
Algorithmen zum Sortieren
Algorithmen für die binäre Suche
Algorithmen zum Verschmelzen (Mischen)
Mengenoperationen auf sortierten Strukturen
Heap-Algorithmen
Algorithmen für Minimum und Maximum
Algorithmen zum lexikografischen Vergleich
Permutation
5.3.7            Allokatoren
Der Standard-Allokator
Speicher reservieren und freigeben
Elemente konstruieren und zerstören
Adressen ermitteln und max_size
void-Allokator
Vergleichsoperatoren
Selbstdefinierten Allokator erstellen und verwenden
Eine eigene Container-Klasse schreiben
 
6          Exception-Handling
6.1            Exception-Handling in C++
6.2       Eine Exception auslösen
6.3       Eine Exception auffangen - Handle einrichten
6.3.1            Reihenfolge (Auflösung) der Ausnahmen
6.3.2            Alternatives catch(...)
6.3.3    Stack-Abwicklung (Stack-Unwinding)
6.3.4    try-Blöcke verschachteln
6.3.5            Exception weitergeben
6.4            Ausnahme-Klassen (Fehlerklassen)
6.4.1            Klassenspezifische Exceptions
6.5            Standard-Exceptions
6.5.1            Virtuelle Methode what()
6.5.2            Anwenden der Standard-Exceptions
out_of_range (logic_error)
invalid_argument (logic_error)
length_error (logic_error)
domain_error (logic_error)
ios_base::failure (logic_error)
overflow_error und underflow_error (runtime_error)
range_error (runtime_error)
6.6            System-Exceptions
6.6.1            bad_alloc
6.6.2            bad_cast
6.6.3            bad_typeid
6.6.4            bad_exception
6.7            Exception-Spezifikation
6.7.1            Unerlaubte Exceptions
6.7.2            terminate-Handle einrichten
 
7        C++-Standard-Bibliothek
7.1       Die String-Bibliothek (string-Klasse)
7.1.1            Exception-Handling
7.1.2            Datentypen
7.1.3    Strings erzeugen (Konstruktoren)
7.1.4            Zuweisungen
7.1.5            Elementzugriff
7.1.6    Länge und Kapazität ermitteln bzw. ändern
7.1.7            Konvertieren in einen C-String
7.1.8            Manipulation von Strings
7.1.9    Suchen in Strings
7.1.10  Strings vergleichen
7.1.11  Die (überladenen) Operatoren
7.1.12            Einlesen einer ganzen Zeile
7.2       Ein-/Ausgabe Klassenhierarchie (I/O-Streams)
7.2.1            Klassen für Ein- und Ausgabe-Streams
Die Klasse ostream
Manipulatoren
Eigene Manipulatoren
Manipulatoren mit Parametern
Eigene Manipulatoren mit Parametern
Ausgabe in Felder
Unformatierte Ausgabe
Die Klasse istream
Manipulatoren
Unformatierte Eingabe
Ein-/Ausgabe-Stream verbinden
Status und Flags von Ein-/Ausgabe-Streams
Status-Flags
Format-Flags
7.2.2            Klassen für Datei-Streams (File-Streams)
fstream
ifstream und ofstream
Datenstrom
Zeichenweise Ein-/Ausgabe
Zeilenweise Ein-/Ausgabe
Blockweise Ein-/Ausgabe
Wahlfreier Dateizugriff
Fehlerbehandlung
good()
Dateiende - eof()
Fehler löschen
fail() und bad()
Exceptions
7.2.3            Klassen für String-Streams
Auf den Stream-Puffer zugreifen
7.2.4    Die Klasse streambuf
Puffer anlegen und Positionieren
Zeichen lesen
Zeichen zurückstellen und schreiben
7.2.5    Die Klasse filebuf
7.2.6    Die Klasse stringbuf
7.2.7    Die Klasse stdiobuf
7.3            Numerische Bibliothek(en)
7.3.1            Komplexe Zahlen (complex-Klasse)
7.3.2            valarray
Konstruktoren
Methoden
Operatoren
Mathematische Funktionen
Arbeiten mit Teilvektoren
Die Klasse slice
Die Klasse gslice
Die Klasse mask_array
Die Klasse indirect_array
7.3.3            Globale numerische Funktionen (cmath und cstdlib)
<cmath>
<cmath> - C99-Standard
<cstdlib> - Mathematische Funktionen
7.3.4            Grenzwerte von Zahlentypen
<climits> und <cfloat> (alias <limits.h> und <float.h>)
7.3.5            Halbnumerische Algorithmen
7.4            Typenerkennung zur Laufzeit
 
8          Weiteres zum C++-Guru
8.1       Module
8.1.1            Aufteilung
8.1.2    Die öffentliche Schnittstelle (Headerdatei)
8.1.3    Die private Datei
8.1.4    Die Client-Datei
8.1.5            Speicherklassen extern und static
8.1.6            Werkzeuge
8.2       Von C zu C++
8.2.1    Notizen
8.2.2    Kein C++
8.2.3    Kein C
8.2.4    malloc und free oder new und delete
8.2.5    setjmp und longjmp oder catch und throw
8.3       "Altes" C++
8.3.1            Headerdateien mit und ohne Endung
8.3.2            Standardbibliothek nicht komplett oder veraltet
8.3.3            Namespace (Namensbereiche)
8.3.4            Schleifenvariable von for
8.4       UML
8.4.1    Wozu UML?
8.4.2    UML-Komponenten
8.4.3            Diagramme erstellen
8.4.4            Klassendiagramme mit UML
Die Klasse
Die Attribute (Eigenschaften) einer Klasse
Das Objekt einer Klasse
Die Operationen (Methoden) einer Klasse
Sichtbarkeit
Klassenattribut
Einiges zur Visualisierung von Klassen in der Praxis
Notizen
Vererbung
Mehrfachvererbung
Abstrakte Klassen
Assoziationen
Kardinalität
Spezielle Assoziationen
Aggregationen
Komposita - Eine strenge Aggregation
Kontexte
Pakete
Schnittstellen
Abhängigkeiten
Die Praxis
Gespräch analysieren
Klassendiagramm entwickeln
Klassen gruppieren
Assoziation bilden
Aggregationen und Komposita
Klassen erstellen
Zusammenfassung
8.5            Programmierstil
8.5.1            Kommentare
8.5.2    Code
8.5.3            Benennung
8.5.4    Code-Formatierung
8.5.5            Zusammenfassung
8.6       Boost
8.6.1            Boost.Regex (Reguläre Ausdrücke)
Reguläre Ausdrücke (Eine kurze Einführung)
Elemente für Reguläre Ausdrücke (POSIX-RE)
Zeichenliterale
Beliebiges Zeichen
Zeichenauswahl
Vordefinierte Zeichenklassen
Quantifizierer
Gruppierung
Alternativen
Sonderzeichen
Konstruktor von Boost.Regex
Verwendung von Boost.Regex
Suchen
Ersetzen mit Boost.Regex
Zusammenfassung von Boost.Regex
 
9            Netzwerkprogrammierung und Cross-Plattform-Entwicklung in C++
9.1            Begriffe zur Netzwerktechnik
9.1.1    IP-Nummern
Statische und dynamische IP-Nummer
IPv4- und IPv6-Nummern
9.1.2            Portnummer
9.1.3    Host- und Domainname
9.1.4            Nameserver
9.1.5    Das IP-Protokoll
9.1.6    TCP und UDP
9.1.7    Was sind Sockets?
9.2            Headerdateien zur Socketprogrammierung
9.2.1            Linux/UNIX
9.2.2            Windows
Bibliotheken
Die Windows-Programmierung und die (C)Syntax
Winsock initialisieren
9.3       Client-/Server-Prinzip
9.3.1            Loopback-Interface
9.4            Erstellen einer Client-Anwendung
9.4.1            socket() - Erzeugen eines Kommunikationsendpunkt
9.4.2            connect() - Client stellt Verbindung zum Server her
Ausfüllen von sockaddr_in
9.4.3    Senden und Empfangen von Daten
send() und recv() - TCP
sendto() und recvfrom() - UDP
9.4.4    close(), closesocket()
9.5            Erstellen einer Server-Anwendung
9.5.1    bind() - Festelegen einer Adresse aus dem Namensraum
9.5.2    listen() - Warteschlange für eingehende Verbindungen einrichten
9.5.3            accept() und die Serverhauptschleife
9.6       Cross-Plattform-Development
9.6.1            Abstraktion Layer
9.6.2            Headerdatei (socket.h)
socket.h für MS-Windows
socket.h für Linux/Unix
9.6.3            Quelldatei (socket.cpp)
socket.cpp für MS-Windows
socket.cpp für Linux/Unix
9.6.4    TCP-Echo-Server (Beispiel)
TCP-Echo-Server (echo_server.cpp)
TCP-Echo-Client (echo_client.cpp)
TCP-Echo-Server - Beispiel ausführen
9.6.5            Exception-Handling integrieren
9.6.6    Server- und Client-Sockets erstellen (TCP)
serversock.h (Server-Socket-Klasse)
serversock.cpp (Server-Socket-Klasse)
clientsock.h (Client-Socket-Klasse)
clientsock.cpp (Client-Socket-Klasse)
All together - Die Hauptprogramme (Server/Client)
echo_server2.cpp
echo_client2.cpp
Beispiel ausführen
Einfaches Clientbeispiel - Eine komplette Webseite abholen
9.6.7    Ein UDP-Beispiel
UDP-Server - udp_echo_server.cpp
UDP-Client - udp_echo_client.cpp
Beispiel ausführen
9.7            Mehrere Clients gleichzeitig behandeln
select() - Eine portablere Altervative
Der Server - multi_server.cpp
Der Client - multi_client.cpp
Das Beispiel ausführen
9.8            Weitere Anmerkungen zur Netzwerkprogrammierung
9.8.1    Das Datenformat
9.8.2    Der Puffer
9.8.3            Portabilität
9.8.4    Von IPv4 nach IPv6
Konstanten
Strukturen
Funktionen
9.8.5    RFC-Dokumente  (Request for Comments)
9.8.6            Sicherheit
9.8.7    Fertige Bibliotheken
 
10        GUI und Multimediaprogrammierung in C++
10.1     GUI-Programmierung - Überblick
10.1.1  Low-Level
10.1.2  High-Level
RAD-Tools
10.1.3            Überblick zu plattformunabhängigen Bibliotheken
10.1.4            Überblick zu plattformabhängigen Bibliotheken
10.2            Multimedia- und Grafikprogrammierung - Überblick
10.2.1            Überblick zu plattformunabhängigen Bibliotheken
10.2.2            Überblick zu plattformabhängigen Bibliotheken
10.3     GUI-Programmierung mit wxWidgets
10.3.1  Warum wxWidgets?
10.3.2  Das erste Programm - Hallo Welt
10.3.3  Die grundlegende Struktur eines wxWidgets-Programm
Elemente zum Frame hinzufügen
Ereignisse behandeln
10.3.4  Event-Handle (Ereignisse behandeln)
Ein Event überspringen
Dynamischer Event-Handle
Weiteres zu den Event-Handlern
10.3.5  Die Fenstergrundlagen
Top-Level-Fenster
Koordinaten-System
Fenster erzeugen und zerstören
10.3.6            Übersicht zu den wxWidgets-(Fenster-)Klassen
10.3.7            wxWindow, wxControl und wxControlWithItems - Die Basisklassen
wxControl und wxControlWithItems
10.3.8  Top-Level-Fenster
wxFrame
wxMDIParentFrame und wxMDIChildFrame
wxDialog (mit wxMessageDialog)
Layout mit wxSizer
wxBoxSizer
wxGridSizer
wxFlexGridSizer, wxStaticBoxSizer und wxNotebookSizer
wxPopupWindow
10.3.9            Container Fenster
wxPanel und wxNotebook
wxPanel
wxNotebook
Alternativen zu wxNotebook
wxScrolledWindow
wxSplitterWindow
10.3.10            Nicht-statische Kontroll-Elemente
wxButton
wxBitmapButton
wxChoice
wxComboBox
wxCheckBox
wxListBox und wxCheckListBox
wxRadioBox und wxRadioButton
wxSpinCtrl und wxSlider
wxTextCtrl
wxToggleButton
10.3.11            Statische Kontroll-Elemente
wxGauge
wxStaticText
wxStaticBitmap
wxStaticLine
wxStaticBox
10.3.12            Menüs
wxMenu
Kontroll-Balken
wxMenuBar
wxToolBar
PopupMenu
10.3.13            Ein Beispiel - Text-Editor
10.3.14            Standard-Dialoge
Dialoge zur Anzeige von Informationen
wxProgressDialog
wxBusyInfo
wxShowTip
All together (Ein Beispiel)
Dialoge für Dateien und Verzeichnisse
wxFileDialog
wxDirDialog
Dialoge zum Auswählen
wxColourDialog
wxFontDialog
wxSingleChoiceDialog
wxMultiChoiceDialog
Dialoge für die Anwender-Eingabe
wxNumberEntryDialog
wxTextEntryDialog
Weitere Dialoge
10.3.15            Weitere Elemente und Techniken im Überblick
Tastatur- und Maus-Eingabe
Device Context (Geräte-Kontext)
Mit Bildern arbeiten
wxBitmap
wxIcon
wxCursor
wxImage
Zwischenablage und Drag & Drop
Fortgeschrittene Fensterklassen
Daten-Strukturen
Strings (wxString)
Arrays (wxArray)
Verkettete Listen (wxList)
wxHashMap
Datum und Uhrzeit
Hilfsklassen für Datenstrukturen
Datei-, Verzeichnis-Klassen
Stream-Klassen
Multithreading
Sockets (wxSocket)
MFC versus wxWidgets
Ausblick
 
Anhang
Operatoren in C++ und deren Bedeutung (Übersicht)
Vorrangtabelle der Operatoren
Schlüsselwörter von C++
Informationsspeicherung
Zahlensysteme
Dezimalsystem
Dualsystem (Binärsystem)
Oktalsystem
Hexadezimalsystem
Zahlensysteme umrechnen
Dezimal nach Dual
Dual nach Dezimal
Dezimal nach Hexadezimal
Hexadezimal nach Dezimal
Oktal nach Dual
Hexadezimal nach Dual
Bytes und Maschinenwörter
Zeichensätze
ASCII-Zeichensatz
ASCII-Erweiterungen
Unicode