Moderne C++ Programmierung - Klassen, Templates, Design Patterns

von: Ralf Schneeweiß

Springer-Verlag, 2006

ISBN: 9783540459545 , 413 Seiten

Format: PDF, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 6,99 EUR

Mehr zum Inhalt

Moderne C++ Programmierung - Klassen, Templates, Design Patterns


 

Vorwort

7

Danksagung

8

Inhaltsverzeichnis

9

1 Einführung

12

2 DieSprache C++

16

2.1 Geschichte und Paradigmenwandel

16

2.2 Grundlagen

20

2.2.1 Bezeichner in C++

23

2.2.2 Der Präprozessor

24

2.2.3 Variablen

32

2.2.4 Standarddatentypen

33

2.2.5 Literalkonstanten

36

2.2.6 Konstanten

37

2.2.7 Aufzählungen

38

2.2.8 Arrays

40

2.2.9 Zeiger

40

2.2.10 Referenzen

47

2.2.11 Typenkonvertierung

48

2.2.12 Ausdrücke

50

2.2.13 Operatoren

51

2.2.14 Anweisungen

55

2.2.15 Kontrollstrukturen

56

2.2.16 Funktionen

60

2.2.17 Funktionsüberladung

65

2.2.18 Funktions - Inlining

67

2.2.19 Makros

69

2.2.20 Dynamische Speicherallokation

70

2.2.21 Strukturen und Klassen

78

2.2.22 Typenkonvertierungmit Konstruktoren

102

2.2.23 Globale, automatischeund dynamische Instanziierung

105

2.2.24 Speicherklassen

111

2.2.25 Der Scope - Operator

117

2.2.26 Verschachtelte Typen

121

2.2.27 Die friend - Deklaration

122

2.2.28 StatischeMethoden und Attribute

123

2.2.29 Vererbung

125

2.2.30 Virtuelle Methoden und Polymorphismus

132

2.2.31 Operatoren der Typenkonvertierung

138

2.2.32 Mehrfachvererbung

145

2.2.33 Virtuelle Vererbung

149

2.2.34 Das Schlüsselwort const

152

2.2.35 Operatorüberladung

156

2.2.36 Exception Handling

166

3 Die Objektorientierte Programmierung mit C++

184

3.1 Der Klassenbegriff

185

3.2 Die Rolle von Patterns und Idiomen

187

3.2.1 Der Iterator

189

3.2.2 Das Zustandsmuster

190

3.2.3 Das Singleton -Muster

198

3.3 Datenstrukturen und Containerklassen

208

3.3.1 Die Liste

209

3.3.2 Der Vektor

219

3.3.3 Dynamische Container und das Problemder Speicherfragmentierung

221

3.3.4 Verfeinerung des Zugriffs durch überladene Operatoren

222

3.4 Arbeitenmit Invarianten

224

4 Generische und generative Programmierung mit C++

232

4.1 Templates

233

4.1.1 Funktionstemplates

234

4.1.2 Klassentemplates

237

4.1.3 Methodentemplates

238

4.1.4 Instanziierung von Templates

240

4.1.5 Member- Templates

241

4.1.6 Spezialisierung von Templates

242

4.1.7 Partielle Spezialisierung

243

4.1.8 Vorgabeargumentefür Templateparameter

246

4.1.9 Abhängige und qualifizierte Namen

247

4.1.10 Explizite Qualifizierung von Templates

252

4.1.11 Barton- Nackman- Trick

253

4.1.12 Das Schlüsselwort typename

255

4.1.13 Template - Templateparameter

258

4.1.14 Container mit Templates

262

4.1.15 Smart Pointer mit Templates

266

4.1.16 Projektorganisationmit Templates

272

4.2 Konzepte für den Einsatz von Templates

279

4.2.1 „Policy Based Design“

281

4.2.2 Idiome für die Template - Programmierung

282

4.2.3 Compiletime - Assertions

283

4.3 Aspektorientierte Programmierung

284

5 Die C++ - Standardbibliothek

288

5.1 Die Geschichte der Standardbibliothek

288

5.2 Die Teilbereiche der Standardbibliothek

289

5.2.1 Die Streams

291

5.2.2 Formatierungen auf einem ostream

296

5.2.3 Die Manipulatoren

297

5.2.4 Die File - Streams

300

5.2.5 Die String- Streams

301

5.2.6 Die STL

303

5.2.7 Die Stringklasse std::string

337

5.2.8 Pseudocontainer für optimiertes Rechnen

343

5.2.9 Autopointer

353

6 Das Softwareprojekt mit C++

358

6.1 Modularisierung eines C++ - Projekts

358

6.1.1 Der Umgang mit Headerdateien

359

6.1.2 Namensräume

364

6.1.3 Das argumentenabhängigeLookup - Verfahren

372

6.1.4 Einige Anmerkungen zumLinker

374

6.1.5 Überladen der Operatoren new und delete

378

6.2 Persistenz und Serialisierung

385

6.3 Systemprogrammierungmit C++

388

6.3.1 Einfaches Objektpooling

388

6.3.2 Nebenläufige Programmierung

393

Literatur

406

Abbildungsverzeichnis

408

Listings

410

Index

420