lehrerbibliothek.deDatenschutzerklärung
C++ ENT-PACKT
C++
ENT-PACKT




Herbert Schildt

mitp-Verlag
EAN: 9783826607318 (ISBN: 3-8266-0731-7)
816 Seiten, paperback, 18 x 24cm, 2001

EUR 39,95
alle Angaben ohne Gewähr

Umschlagtext
Dieses Buch behandelt detailliert alle Aspekte der Sprache C++: Befehle, Funktionen und Klassenbibliotheken, Algorithmen und Applikationen. Zahlreiche Tipps für effizientes und produktives Programmieren sowie viele Beispiele aus erfahrener Hand machen dieses Werk zu einem unverzichtbaren Begleiter für alle C++-Programmierer. Herbert Schildt beantwortet Ihnen alle speziellen Fragen zu C++.



C++ Ent-Packt ist in fünf Teile gegliedert:

Teil I behandelt umfassend die Untermenge C von C++. Teil II beschreibt detailliert die Erweiterungen und Verbesserungen, die durch C++ an C vorgenommen wurden: die objektorientierten Features wie Klassen, Konstruktoren, Destruktoren und Templates. Teil III beschreibt die Standardfunktionenblibliothek und Teil IV die Standardklassenbibliothek inklusive der STL (Standard Template Library). Teil V erläutert praktische Beispiele für den Einsatz von C++ und objektorientierter Programmierung. Herbert Schildt, weltweit führender Autor von Fachbüchern für Programmierer und Mitglied des ANSI/ISO Komitees, liefert in diesem Buch die neuesten Entwicklungen des ANSI/ISO-Standards.



Aus dem Inhalt:

· Die Untermenge C - die Grundlage von C++

· Grundlagen der objektorientierten Programmierung

· Klassen und Objekte

· Arrays, Zeiger und Operatoren zur dynamischen Allozierung

· Konstruktoren und Destruktoren

· Virtuelle Funktionen und Vererbung

· Überladen von Funktionen und Operatoren

· Run-Time-Type-ID (RTTI)

· Namensräume und Templates

· Ausnahmebehandlung

· Die Standard-Template Library (STL )



Alle Quellcode-Beispiele können Sie sich kostenlos aus dem Web downloaden!
Inhaltsverzeichnis
Vorwort 21

Teil l Die Grundlage von C++: Die C-Teilmenge 25

Kapitel 1: Ein Überblick über C 27
Die Ursprünge von C 27
C ist eine Middle-Level-Sprache 28
C ist eine strukturierte Sprache 29
C ist eine Programmierersprache 31
Die Form eines C-Programms 32
Die Bibliothek und das Linken 33
Getrennte Kompilierung 34
Die Dateierweiterungen .C und .CPP 34

Kapitel 2: Ausdrücke 35
Die fünf grundlegenden Datentypen 35
Modifizieren der Grundtypen 36
Bezeichnernamen 37
Variablen 38
Zugriffs-Modifier 42
Speicherklassen-Bezeichner 44
static-Variablen 46
Variableninitialisierungen 49
Konstanten 50
Operatoren 52
Ausdrücke 66

Kapitel 3: Anweisungen 71
True und false in C und C++ 71
Selektionsanweisungen 72
Iterationsanweisungen 81
Variablendeklarationen innerhalb von Selektions- und Iterationsanweisungen 90
Sprunganweisungen 91
Ausdrucksanweisungen 95
Blockanweisungen 96

Kapitel 4: Arrays und nullterminierte Zeichenketten 97
Eindimensionale Arrays 97
Einen Zeiger auf ein Array erzeugen 98
Eindimensionale Arrays an Funktionen übergeben 99
Nullterminierte Zeichenketten 100
Zweidimensionale Arrays 102
Mehrdimensionale Arrays 106
Zeiger indizieren 107
Array-Initialisierung 109
Ein Tic-Tac-Toe-Beispiel 111

Kapitel 5: Zeiger 115
Was sind Zeiger? 115
Zeigervariablen 116
Die Zeigeroperatoren 116
Zeigerausdrücke 118
Zeigervergleiche 119
Zeiger und Arrays 121
Mehrfache Indirektion 123
Zeiger initialisieren 124
Zeiger auf Funktionen 125
Die dynamischen Belegungsfunktionen von C 128
Probleme mit Zeigern 129

Kapitel 6: Punktionen 133
Die allgemeine Form von Funktionen 133
Bereichsregeln für Funktionen 134
Funktionsargumente 134
arge und argv - Argumente für main() 138
Die return-Anweisung 141
Rekursion 146
Funktionsprototypen 147
Parameterlisten variabler Länge deklarieren 149
Funktionsparameterdeklarationen im alten und im neuen Stil 149
Implementierungsfragen 150

Kapitel 7: Strukturen, Unions, Aufzählungen un benutzerdefinierte Typen 153
Strukturen 153
Arrays aus Strukturen 156
Strukturen an Funktionen übergeben 157
Strukturzeiger 159
Arrays und Strukturen in Strukturen 162
Bit-Felder 163
Unions 165
Aufzählungen 167
Die Verwendung von sizeof zur Sicherung der Portabilität 170
typedef 171

Kapitel 8: Konsolen-l/0 im C-Stil 173
Ein wichtiger Anwendungshinweis 174
Zeichen lesen und schreiben 174
Zeichenketten lesen und schreiben 176
Formatierter Konsolen-I/O 179
printf() 179
scanf() 185

Kapitel 9: Datei-l/0 193
C.Datei- und C++-Datei-I/O 193
Streams und Dateien 193
Streams 194
Dateien 194
Grundlagen des Dateisystems 195
fread() und fwrite() 205
fseek() und I/O im wahlfreien Zugriff 207
fprintf() und fscanf() 208
Die Standard-Streams 209

Kapitel 10: Der Präprozessor und Kommentare 213
Der Präprozessor 213
#define 214
#error 216
#include 216
Bedingte Kompilierungsdirektiven 217
#undef 220
Die Verwendung von defined 220
#line 221
#pragma 221
Die Präprozessor-Operatoren # und ## 222
Vordefinierte Makronamen 223
Kommentare im C-Stil 223

Teil II C++ 225

Kapitel 11: Ein Überblick über C++ 227
Der Ursprung von C++ 227
Was ist objektorientierte Programmierung? 228
Grundlagen von C++ 230
Alter Stil und modernes C++ 235
Einführung in C++-Klassen 239
Überladen von Funktionen 242
Überladen von Operatoren 244
Vererbung 245
Konstruktoren und Destruktoren 249
Die Schlüsselwörter von C++ 252
Die allgemeine Form eines C++-Programms 252

Kapitel 12: Klassen und Objekte 253
Klassen 253
Strukturen und Klassen 256
Union und Klassen 257
Anonyme union 258
Befreundete Funktionen 259
Befreundete Klassen 263
Inline-Funktionen 264
Inline-Funktionen in Klassen definieren 265
Konstruktoren mit Parametern 267
Spezialfall: Konstruktoren mit einem Parameter 268
Statische Klassenelemente 269
Ausführung von Konstruktor und Destruktor 275
Geschachtelte Klassen 276
Lokale Klassen 277
Objekte an Funktionen übergeben 277
Objekte zurückgeben 279
Objekte zuweisen 280

Kapitel 13: Arrays, Zeiger, Referenzen und die Operatore zur dynamischen Allozierung 281
Arrays von Objekten 281
Zeiger auf Objekte 284
Typüberprüfung bei C++-Zeigern 285
Der Zeiger this 286
Zeiger auf abgeleitete Typen 287
Zeiger auf Klassenelemente 289
Referenzen 291
Eine Frage des Stils 297
C++-Operatoren für dynamische Allozierung 298

Kapitel 14: Überladen von Punktionen, Kopierkonstruktore und Defaultarguntente 307
Überladen von Konstruktorfunktionen 309
Kopierkonstruktor 312
Die Adresse einer überladenen Funktion finden 315
Der Anachronismus overload 316
Defaultargumente von Funktionen 316
Überladen von Funktionen und Uneindeutigkeit 321

Kapitel 15: Überladen von Operatoren 325
Operatorfunktion als Element der Klasse 325
Einschränkungen beim Überladen von Operatoren 330
Überladene Operatoren als friend-Funktionen 331
Überladen von new und delete 336
Überladen einiger spezieller Operatoren 343
Überladen des Komma-Operators 348

Kapitel 16: Vererbung 351
Zugriffskontrolle Basisklasse 351
Vererbung und geschützte Elemente 353
Geschützte Vererbung 356
Erben von mehreren Basisklassen 357
Konstruktoren, Destruktoren und Vererbung 358
Zugriffsrechte vergeben 364
Virtuelle Basisklassen 366

Kapitel 17: Virtuelle Funktionen und Polymorphie 371
Virtuelle Funktionen 371
Das Attribut virtual wird geerbt 375
Virtuelle Funktionen sind hierarchisch 376
Rein virtuelle Funktionen 378
Virtuelle Funktionen verwenden 380
Frühe und späte Bindung 382

Kapitel 18: Templates 385
Generische Funktionen 385
Generische Funktionen anwenden 392
Generische Klassen 395
Die Schlüsselwörter typename und export 404
Die Kraft von Templates 404

Kapitel 19: Ausnahmebehandlung 407
Grundlagen der Ausnahmebehandlung 407
Behandlung von Ausnahmen abgeleiteter Klassen 414
Optionen der Ausnahmebehandlung 415
terminate() und unexpected() verstehen 419
Die Funktion uncaught_exception() 421
Die Klassen exception und bad_exception 421
Ausnahmebehandlung anwenden 422

Kapitel 20: Die Grundlagen der I/O von C++ 423
Alte und moderne I/O in C++ 423
C++-Streams 424
Die Stream-Klassen von C++ 424
Formatierte I/O 426
Überladen von « und » 435
Erzeugen eigener Extraktoren 440
Erzeugen eigener Manipulator-Funktionen 442

Kapitel 21: Datei-I/O in C++ 447
und die Datei-Klassen 447
Öffnen und Schließen einer Datei 447
Lesen und Schreiben von Textdateien 450
Unformatierte und binäre I/O 452
Weitere Funktionen get() 456
getline() 456
EOF feststellen 458
Die Funktion ignore() 459
peek() und putback() 460
flush() 460
Beliebiger Zugriff 461
Status der I/O 464
Benutzerdefinierte I/O und Dateien 466

Kapitel 22: Run-Time-Type-ID und die Cast-Operatoren 469
Run-Time-Type-Identifizierung (RTTI) 469
Die Cast-Operatoren 477

Kapitel 23: Namensräume, Konvertierungsfunktionen un weitere fortgeschrittene Themen 487
Namensräume 487
Der Namensraum std 494
Konvertierungsfunktionen erzeugen 496
const-Elementfunktionen und mutable 499
volatile-Elementfunktionen 500
Explizite Konstruktoren 501
Verwenden des Schlüsselworts asm 502
Link-Spezifikation 503
Array-basierte I/O 504
Dynamische Arrays verwenden 508
Binäre I/O und Array-basierte Streams 509
Zusammenfassung der Unterschiede von C und C++ 510

Kapitel 24: Einführung in die Standard-Template-library 511
Ein Überblick über die STL 511
Die Container-Klasse 514
Allgemeine Theorie der Operationen 515
Vektoren 516
Zugriff auf einen Vektor mit einem Iterator 519
Listen 524
push_front() oder push_back()? 528
Maps 533
Algorithmen 538
Funktionsobjekte verwenden 546
Die Klasse string 553
Abschließende Gedanken zur STL 562

Teil III Die Standardfunktionenbibliothek 563

Kapitel 25: C-basierte I/O-Punktionen 565
clearerr 565
fclose 566
feof 566
ferror 566
fflush 567
fgetc 567
fgetpos 567
fgets 568
fopen 568
fprintf 569
fputc 569
fputs 570
fread 570
freopen 571
fscanf 571
fseek 571
fsetpos 572
ftell 572
fwrite 572
getc 573
getchar 573
gets 573
perror 574
printf 574
putc 576
putchar 576
puts 577
remove 577
rename 577
rewind 577
scanf 577
setbuf 580
setvbuf 580
sprintf 581
sscanf 581
tmpfile 581
tmpnam 582
ungetc 582
vprintf, vfprintf, vsprintf und vsnprintf 582

Kapitel 26: Punktionen für Zeichenketten und Zeichen 583
isalnum 583
isalpha 584
iscntrl 584
isdigit 584
isgraph 584
islower 585
isprint 585
ispunct 585
isspace 585
isupper 585
isxdigit 586
memchr 586
memcmp 586
memcpy 587
memmove 587
memset 587
strcat 587
strchr 588
strcmp 588
strcoll 588
strcpy 589
strcspn 589
strerror 589
strlen 589
strncat 589
strncmp 590
strncpy 590
strpbrk 591
strrchr 591
strspn 591
strstr 591
strtok 592
strxfrm 592
tolower 592
toupper 592

Kapitel 27: Die mathematischen Funktionen 593
acos 594
asin 594
atan 594
atan2 594
ceil 595
cos 595
cosh 595
exp 595
fabs 596
floor 596
fmod 596
frexp 596
Idexp 597
log 597
log10 597
modf 597
pow 598
sin 598
sink 598
sqrt 598
tan 599
tanh 599

Kapitel 28: Zeit, Datum und Lokalisierung 601
asctime 601
clock 602
ctime 602
difftime 602
gmtime 603
localeconf 603
localtime 604
mktime 604
setlocale 605
strftime 605
time 607

Kapitel 29: Die dynamische Allozierung 609
calloc 609
free 610
malloc 610
realloc 610

Kapitel 30: Hilfsfunktionen 611
abort 611
abs 612
assert 612
atexit 612
atof 613
atoi 613
atol 613
bsearch 613
div 614
exit 614
getenv 615
labs 615
Idiv 615
longjmp 616
mblen 616
mbstowcs 616
mbtowc() 617
qsort 617
raise 617
rand 618
setjmp 618
signal 618
srand 619
strtod 619
strtol 620
strtoul 620
system 620
va_arg, va_start, va_end 621
wcstombs 621
wctomb 622

Kapitel 31: Die wide character-Funktionen 623
Wide character-Klassifizierungsfunktionen 624
Wide character-I/O-Funktionen 626
Wide character-Funktionen für Zeichenketten 627
Wide character-Konvertierungen 628
Wide character-Funktionen für Arrays 628
Multibyte/wide character Konvertierung 629

Teil IV Die Klassenbibliothek von Standard-C++ 631

Kapitel 32: Die Standard-l/O-Klassen von C++ 633
Die I/O-Klassen 633
Die I/O-Header 635
Die Format-Flags und I/O-Manipulatoren 636
Verschiedene Datentypen 638
Überladene Operatoren « und » 639
Allgemeine I/O-Funktionen 640

Kapitel 33: Die Container-Klassen der STL 653
Die Container-Klassen 654
bitset 655
deque 657
list 659
map 661
multimap 663
multiset 665
queue 667
priority_queue 667
set 668
Stack 670
vector 671

Kapitel 34: Die STL Algorithmen 675
adjacent_find 676
binary_search 676
copy 676
copy_backward 676
count 677
count_if 677
equal 677
equal_range 677
fill und fill_n 678
find 678
fmd_end 678
fmd_first_of 679
fmd_if 679
for_each 679
generate und generate_n 679
includes 680
inplace_merge 680
iter_swap 680
lexicographical_compare 681
lower_bound 681
make_heap 681
max 682
max_element 682
merge 682
min 683
min_element 683
mismatch 683
next_permutation 684
nth_element 684
partial_sort 684
partial_sort_copy 685
partition 685
pop_heap 685
prev_permutation 685
push_heap 686
random_shuffle 686
remove, remove_if, remove_copy und remove_copy_if 686
replace, replace_copy, replace_if und replace_copy_if 687
reverse und reverse_copy 688
rotate und rotate_copy 688
search 688
search_n 689
set_difference 689
set_intersection 690
set_symmetric_difference 690
set_union 691
sort 691
sort_heap 691
stable_partition 692
stable_sort 692
swap 692
swap_ranges 692
transform 693
unique und unique_copy 693
upper_bound 694

Kapitel 35: Iteratoren, Allocatoren und Funktionsobjekte 695
Iteratoren 695
Funktionsobjekte 703
Allocatoren 708

Kapitel 36: Zeichenketten in C++ 711
Die Klasse basic_string 711
Die Klasse char_traits 719

Kapitel 37: Die numerischen Klassen 721
Die Klasse complex 721
Die Klasse valarray 724
Die numerischen Algorithmen 736

Kapitel 38: Ausnahmen und verschiedene Klassen 741
Ausnahmen 741
Die Klasse auto_ptr 743
Die Klasse pair 744
Lokalisierung 745
Andere interessante Klassen 746

Teil V C++ anwenden 747

Kapitel 39: Neue Klassen integrieren: Eine eigene Klass für Zeichenketten 749
Die Klasse StrType 749
Konstruktoren und Destruktor 751
I/O auf Zeichenketten 752
Die Zuweisungsfunktionen 753
Verknüpfen 754
Teilzeichenketten subtrahieren 756
Die Vergleichsoperatoren 758
Weitere Funktionen für Zeichenketten 759
Die gesamte Klasse StrType 759
Die Klasse StrType verwenden 767
Neue Typen erzeugen und integrieren 769
Eine Herausforderung 769

Kapitel 40: Ein objektorientierter Parser für Ausdrücke 771
Ausdrücke 771
Ausdrücke parsen: Das Problem 772
Einen Ausdruck parsen 773
Die Parserklasse 774
Einen Ausdruck zerlegen 775
Ein einfacher Parser für Ausdrücke 777
Den Parser verstehen 781
Variablen dem Parser zufügen 782
Syntaxüberprüfung in Parsern rekursiven Abstiegs 790
Einen genetischen Parser bauen 790
Einiges zum Ausprobieren 797

Stichwortverzeichnis 798