Suchen und Finden

Titel

Autor/Verlag

Inhaltsverzeichnis

Nur eBooks für mein Endgerät anzeigen:

 

Newsletter

C++ Einführung und professionelle Programmierung

von: Ulrich Breymann

Carl Hanser Fachbuchverlag, 2007

ISBN: 9783446411463, 768 Seiten

9. Auflage

Format: PDF, OL

Mac OSX,Windows PC,Mac OSX,Windows PC Bookeen Cybook Orizon,Ectaco Lite,Aluratek Libre,eLyricon EBX-500.TFT,PocketBook 302,FlatReader,BeBook 'One',iRiver Story,Sony Reader PRS-3xx,Bookeen CyBook Opus,Hanvon/Hexaglot N518,PocketBook 301+,COOL-ER eReader,Inves-Book 600,eLyricon EBX-600.E-Ink, Bookeen CyBook Gen3 ab Rev: 1.9,Italica Reader,Sony Reader PRS-505, -6xx, -7xx,Pocketbook 360,Hanvon N516 Weltbild Apple iPad, Android Tablet PC's Online-Lesen für: Linux,Mac OSX,Windows PC

Preis: 39,90 EUR

  • Mein Echo im Beruf - Wege zum Einklang zwischen innerer Entwicklung und Arbeitsleben
    Der Profi-Verkäufer: Wegweiser zum Erfolg mit 100 Motivationsimpulsen für den Alltag
    Globalisierung
    Finanzbuchhaltung und Jahresabschluss
    Neoliberalismus
    Buddhismus für den Alltag

     

     

     

 

Mehr zum Inhalt

C++ Einführung und professionelle Programmierung


 

Auf einen Blick

5

Inhaltsverzeichnis

6

Vorwort zur 9. Auflage

17

Vorwort

18

Teil I Objektorientierte Programmierung mit C++

20

1 Einführung

22

1.1 Compiler

25

2 Grundlegende Begriffe

26

2.1 Das erste Programm

26

2.1.1 Struktur eines C++-Programms

32

2.1.2 Integrierte Entwicklungsumgebung (IDE) für Windows

33

2.1.3 Andere Editoren und Entwicklungsumgebungen

35

2.1.4 KDevelop - Entwicklungsumgebung für Linux/KDE

38

2.1.5 Namenskonventionen

39

2.2 Einfache Datentypen und Operatoren

40

2.2.1 Ausdruck

40

2.2.2 Ganze Zahlen

41

2.2.3 Reelle Zahlen

46

2.2.4 Konstante

51

2.2.5 Zeichen

52

2.2.6 Logischer Datentyp bool

55

2.2.7 Referenzen

57

2.2.8 Regeln zum Bilden von Ausdrücken

58

2.3 Gültigkeitsbereich und Sichtbarkeit

59

2.3.1 Namespace std

61

2.4 Kontrollstrukturen

62

2.4.1 Anweisungen

62

2.4.2 Sequenz (Reihung)

64

2.4.3 Auswahl (Selektion, Verzweigung)

64

2.4.4 Fallunterscheidungen mit switch

72

2.4.5 Wiederholungen

74

2.4.6 Kontrolle mit break und continue

82

2.5 Benutzerdefinierte und zusammengesetzte Datentypen

84

2.5.1 Aufzählungstypen

84

2.5.2 Arrays: Der C++-Standardtyp vector

86

2.5.3 Zeichenketten: Der C++-Standardtyp string

92

2.5.4 Strukturierte Datentypen

94

2.5.5 Komplexe Zahlen: Der C++-Standardtyp complex

95

3 Einfache Ein- und Ausgabe

98

3.1 Standardein- und -ausgabe

98

3.2 Ein- und Ausgabe mit Dateien

101

4 Programmstrukturierung

106

4.1 Funktionen

106

4.1.1 Aufbau und Prototypen

107

4.1.2 Gültigkeitsbereiche und Sichtbarkeit in Funktionen

110

4.2 Schnittstellen zum Datentransfer

112

4.2.1 Übergabe per Wert

112

4.2.2 Übergabe per Referenz

117

4.2.3 Gefahren bei der Rückgabe von Referenzen

118

4.2.4 Vorgegebene Parameterwerte und variable Parameterzahl

119

4.2.5 Überladen von Funktionen

120

4.2.6 Funktion main()

123

4.2.7 Beispiel Taschenrechnersimulation

123

4.2.8 Spezifikation von Funktionen

129

4.3 Modulare Programmgestaltung

131

4.3.1 Steuerung der Übersetzung nur mit #include

132

4.3.2 Einbinden vor übersetzter Programmteile

132

4.3.3 Datei übergreifende Gültigkeit und Sichtbarkeit

134

4.3.4 Übersetzungseinheit, Deklaration, Definition

136

4.3.5 Compilerdirektiven und Makros

139

4.4 Funktions-Templates

146

4.4.1 Spezialisierung von Templates

149

4.4.2 Einbinden von Templates

150

4.5 inline-Funktionen

152

4.6 Standardfunktionen / Bibliotheken

154

5 Objektorientierung

156

5.1 Abstrakte Datentypen

156

5.2 Klassen und Objekte

158

5.2.1 inline-Elementfunktionen

162

5.3 Initialisierung und Konstruktoren

163

5.3.1 Standardkonstruktor

164

5.3.2 Allgemeine Konstruktoren

165

5.3.3 Kopierkonstruktor

168

5.3.4 Typumwandlungskonstruktor

170

5.4 Beispiel: Klasse für rationale Zahlen

172

5.4.1 Aufgabenstellung

172

5.4.2 Entwurf

173

5.4.3 Implementation

177

5.5 const-Objekte und Methoden

182

5.6 Faustregeln zur Konstruktion von Schnittstellen

183

5.7 Destruktoren

187

5.8 Wie kommt man zu Klassen und Objekten? Ein Beispiel

189

5.8.1 Einige Analyse-Überlegungen

190

5.8.2 Design

193

5.9 Gegenseitige Abhängigkeit von Klassen

196

6 Intermezzo: Zeiger

200

6.1 Zeiger und Adressen

200

6.2 C-Arrays

204

6.2.1 C-Arrays und sizeof

206

6.2.2 Indexoperator bei C-Arrays

207

6.2.3 Initialisierung von C-Arrays

207

6.2.4 Zeigerarithmetik

207

6.3 C-Zeichenketten

209

6.4 Dynamische Datenobjekte

216

6.4.1 Freigeben dynamischer Objekte

219

6.5 Zeiger und Funktionen

222

6.5.1 Parameterübergabe mit Zeigern

222

6.5.2 Parameter des main-Programms

225

6.5.3 Gefahren bei der Rückgabe von Zeigern

225

6.6 Mehrdimensionale C-Arrays

227

6.6.1 Statische mehrdimensionale C-Arrays

227

6.6.2 Dynamisch erzeugte mehrdimensionale Arrays

232

6.7 Binäre Ein-/Ausgabe

234

6.8 Zeiger auf Funktionen

238

6.9 Zeiger auf Elementfunktionen und -daten

242

6.9.1 Zeiger auf Elementfunktionen

243

6.9.2 Zeiger auf Elementdaten

244

6.10 this-Zeiger

244

6.11 Komplexe Deklarationen lesen

245

7 Objektorientierung

248

7.1 Eine String-Klasse

248

7.1.1 friend-Funktionen

254

7.2 Klassenspezifische Daten und Funktionen

256

7.2.1 Klassenspezifische Konstante

259

7.3 Klassentemplates

261

7.3.1 Ein Stack-Template

261

7.3.2 Stack mit statisch festgelegter Größe

264

7.3.3 Ökonomische Instanziierung von Templates

266

7.3.4 Member-Template

268

7.3.5 Template-Metaprogrammierung

268

8 Vererbung

272

8.1 Vererbung und Initialisierung

279

8.2 Zugriffsschutz

280

8.3 Typbeziehung zwischen Ober- und Unterklasse

282

8.4 Code-Wiederverwendung

283

8.5 Überschreiben von Funktionen in abgeleiteten Klassen

285

8.6 Polymorphismus

286

8.6.1 Virtuelle Funktionen

286

8.6.2 Abstrakte Klassen

292

8.6.3 Virtuelle Destruktoren

299

8.7 Vererbung und andere Beziehungen

301

8.7.1 Vererbung

301

8.7.2 Der Teil und das Ganze

304

8.7.3 Assoziation

304

8.7.4 Benutzt-Beziehung

306

8.8 Mehrfachvererbung

306

8.8.1 Namenskonflikte

310

8.8.2 Virtuelle Basisklassen

312

8.8.3 Virtuelle Basisklassen und Initialisierung

313

9 Überladen von Operatoren

316

9.1 Rationale Zahlen - noch einmal

318

9.1.1 Arithmetische Operatoren

318

9.1.2 Ausgabeoperator <<

321

9.2 Eine Klasse für Vektoren

323

9.2.1 Index-Operator

326

9.2.2 Zuweisungsoperator =

328

9.2.3 Mathematische Vektoren

331

9.2.4 Multiplikations-Operator

332

9.3 Zuweisungsoperator und Vererbung

333

9.4 Inkrement-Operator ++

338

9.5 Typumwandlungsoperator

342

9.6 Smart-Pointer: Operatoren -> und *

344

9.6.1 Smart Pointer und die C++-Standardbibliothek

350

9.7 Objekte als Funktionen

351

10 Fehlerbehandlung

354

10.1 Ausnahmebehandlung

356

10.1.1 Exception-Spezifikation in Deklarationen

360

10.1.2 Exception-Hierarchie in C++

360

10.1.3 Besondere Fehlerbehandlungsfunktionen

363

10.1.4 Erkennen logischer Fehler

364

10.1.5 Durch Exceptions verursachte Speicherlecks vermeiden

367

10.2 Speicherbeschaffung mit new

368

11 Ein Werkzeugkasten

372

11.1 Behälterklassen (Container)

372

11.1.1 Container-Arten

375

11.2 Listen

376

11.3 Warteschlangen

383

11.4 Iteratoren

387

11.4.1 Iterator für eine Listen-Klasse

389

11.4.2 Iteratoren auf nicht-veränderliche Elemente

394

11.5 Sortierte Listen

395

11.6 Mehrdimensionale Matrizen

401

11.6.1 Zweidimensionale Matrix

402

11.6.2 Dreidimensionale Matrix

405

11.7 Fehlersuche mit Trace-Objekten

408

11.7.1 Klasse Trace

410

11.7.2 Anwendungsbeispiel

414

12 Vermischtes

418

12.1 Namensräume

418

12.2 C++-Header

421

12.3 Einbinden von C-Funktionen

423

12.4 Standard-Typumwandlungen

423

12.5 Standard-Typumwandlungsoperatoren

425

12.6 Typinformationen zur Laufzeit

429

12.6.1 Typidentifizierung mit typeid()

429

12.6.2 Anwendung: Eine Menge graphischer Objekte

430

12.6.3 Vor- und Nachteile der Laufzeittyp-Information

436

12.7 Unions

436

12.8 Bitfelder

437

12.9 Automatische Typermittlung mit auto

438

12.10 Delegierender Konstruktor

439

12.11 Netzwerk-Programmierung

440

12.12 GUI-Programmierung

441

12.12.1 Ereignisgesteuerte Programmierung

442

12.12.2 GUI-Programmierung mit Qt

442

13 Dateien und Ströme

448

13.1 Ausgabe

449

13.1.1 Formatierung der Ausgabe

451

13.2 Eingabe

455

13.2.1 Eingabe von Leerdaten mit Return

458

13.3 Manipulatoren

460

13.3.1 Eigene Manipulatoren

464

13.4 Fehlerbehandlung

465

13.5 Typumwandlung von Dateiobjekten nach bool

467

13.6 Arbeit mit Dateien

468

13.6.1 Positionierung in Dateien

469

13.6.2 Lesen und Schreiben in derselben Datei

470

13.7 Eingabe benutzerdefinierter Typen

472

13.8 Umleitung auf Strings

473

Teil II Die C++-Standardbibliothek

476

14 Aufbau und Übersicht

478

14.1 Auslassungen

480

14.2 Beispiele des Buchs und die C++-Standardbibliothek

482

15 Hilfsfunktionen und -klassen

484

15.1 Relationale Operatoren

484

15.2 Paare

484

15.3 Tupel

485

15.4 Funktionsobjekte

487

15.4.1 Arithmetische, vergleichende und logische Operationen

488

15.4.2 Funktionsobjekte zum Negieren logischer Prädikate

488

15.4.3 Binden von Argumentwerten

489

15.4.4 Zeiger auf Funktionen in Objekte umwandeln

491

16 Container

494

16.1 Gemeinsame Eigenschaften

495

16.1.1 Reversible Container

498

16.2 Sequenzen

499

16.2.1 vector

501

16.2.2 vector<bool>

502

16.2.3 list

503

16.2.4 deque

506

16.2.5 stack

508

16.2.6 queue

509

16.2.7 priority_queue

511

16.2.8 array

514

16.3 Sortierte assoziative Container

515

16.3.1 map

515

16.3.2 multimap

522

16.3.3 set

522

16.3.4 multiset

525

16.4 Hash-Container

527

16.4.1 unordered_map

529

16.4.2 unordered_multimap

535

16.4.3 unordered_set

535

16.4.4 unordered_multiset

539

16.5 bitset

539

17 Iteratoren

544

17.1 Iterator-Kategorien

545

17.1.1 Anwendung von Traits

547

17.2 distance() und advance()

550

17.3 Reverse-Iteratoren

550

17.4 Insert-Iteratoren

550

17.5 Stream-Iteratoren

553

18 Algorithmen

554

18.1 Nicht-verändernde Algoritmen

554

18.1.1 for_each

554

18.1.2 find und find_if

554

18.1.3 find_end

555

18.1.4 find_first_of

556

18.1.5 adjacent_find

556

18.1.6 count und count_if

557

18.1.7 mismatch

558

18.1.8 equal

559

18.1.9 search

559

18.1.10 search_n

560

18.2 Modifizierende Algorithmen

560

18.2.1 copy und copy_backward

560

18.2.2 swap, iter_swap und swap_ranges

562

18.2.3 transform

563

18.2.4 replace und Varianten

566

18.2.5 generate und generate_n

566

18.2.6 fill und fill_n

567

18.2.7 remove und Varianten

568

18.2.8 unique und unique_copy

569

18.2.9 reverse und reverse_copy

570

18.2.10 rotate und rotate_copy

570

18.2.11 iota

570

18.2.12 random_shuffle

571

18.2.13 partition und stable_partition

572

18.3 Sortieren und Verwandtes

573

18.3.1 sort

573

18.3.2 stable_sort

575

18.3.3 partial_sort und partial_sort_copy

575

18.3.4 nth_element

576

18.4 Binäre Suche

577

18.4.1 binary_search

578

18.4.2 lower_bound

578

18.4.3 upper_bound

579

18.4.4 equal_range

579

18.5 Verschmelzen (merge)

581

18.5.1 Verschmelzen an Ort und Stelle (inplace_merge)

583

18.6 Mengenoperationen auf sortierten Strukturen

584

18.6.1 includes

584

18.6.2 set_union

585

18.6.3 set_intersection

586

18.6.4 set_difference

587

18.6.5 set_symmetric_difference

588

18.7 Heap-Algorithmen

589

18.7.1 pop_heap

591

18.7.2 push_heap

591

18.7.3 make_heap

592

18.7.4 sort_heap

593

18.8 Minimum und Maximum

593

18.9 Lexikographischer Vergleich

595

18.10 Permutationen

595

19 Ein- und Ausgabe

598

20 Nationale Besonderheiten

600

20.1 Sprachumgebungen festlegen und ändern

600

20.1.1 locale-Elementfunktionen

601

20.1.2 Namespace std-globale Funktionen

602

20.2 Zeichenklassifizierung und -umwandlung

602

20.3 Kategorien

603

20.3.1 collate

604

20.3.2 ctype

604

20.3.3 numeric

606

20.3.4 monetary

608

20.3.5 time

611

20.3.6 messages

613

20.4 Konstruktion eigener Facetten

614

21 Numerisches

616

21.1 Komplexe Zahlen

616

21.2 Grenzwerte von Zahltypen

617

21.3 Halbnumerische Algorithmen

619

21.3.1 accumulate

619

21.3.2 inner_product

620

21.3.3 partial_sum

621

21.3.4 adjacent_difference

621

21.4 Optimierte numerische Arrays (valarray)

624

21.4.1 Konstruktoren

624

21.4.2 Elementfunktionen

625

21.4.3 Binäre Valarray-Operatoren

628

21.4.4 Mathematische Funktionen

630

21.4.5 slice

631

21.4.6 slice_array

633

21.4.7 gslice

634

21.4.8 gslice_array

637

21.4.9 mask_array

637

21.4.10 indirect_array

638

22 String

640

23 Typerkennung zur Laufzeit

650

24 Speichermanagement

652

24.1 <new>

652

24.2 <memory>

653

25 C-Header

656

25.1 <cassert>

656

25.2 <cctype>

656

25.3 <cerrno>

657

25.4 <cfloat>

657

25.5 <ciso646>

657

25.6 <climits>

658

25.7 <clocale>

658

25.8 <cmath>

658

25.9 <csetjmp>

658

25.10 <csignal>

658

25.11 <cstddef>

658

25.12 <cstdarg>

659

25.13 <cstdio>

660

25.14 <cstdlib>

660

25.15 <cstring>

661

25.15.1 Abweichung vom C-Standard

661

25.15.2 Funktionen für C-Strings

662

25.15.3 Funktionen für C-Strings maximaler Länge

663

25.15.4 Funktionen für Bytefelder

663

25.16 <ctime>

664

25.16.1 Datentypen

664

25.16.2 Funktionen

665

26 Nachwort

666

A Anhang

668

A.1 Programmierhinweise

668

A.2 Die wichtigsten C++-Schlüsselwörter

672

A.3 ASCII-Tabelle

672

A.4 Änderungen im C++-Standard

675

A.5 Rangfolge der Operatoren

676

A.6 Compilerbefehle

677

A.7 Make-Dateien

678

A.7.1 Programmerzeugung für ein Projekt

679

A.8 Installation von Qt 4

680

A.8.1 Installation von Qt4 unter Windows

680

A.8.2 Integration von Qt in ein Dev-C++-Projekt

680

A.8.3 Installation von Qt4 unter Linux

681

A.9 Lösungen zu den Übungsaufgaben

682

Kapitel 2

682

Kapitel 3

688

Kapitel 4

691

Kapitel 5

699

Kapitel 6

705

Kapitel 7

711

Kapitel 8

714

Kapitel 9

716

Kapitel 10

722

Kapitel 11

723

Kapitel 12

728

Kapitel 15

729

Kapitel 16

730

Kapitel 18

732

Literaturverzeichnis

736

OOP-Glossar

738

Stichwortverzeichnis

746