دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
دسته بندی: برنامه نویسی: زبان های برنامه نویسی ویرایش: 2. Auflage نویسندگان: Ulrich Breymann سری: ISBN (شابک) : 3446426914, 9783446426917 ناشر: Hanser Verlag سال نشر: 2011 تعداد صفحات: 994 زبان: German فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) حجم فایل: 10 مگابایت
در صورت تبدیل فایل کتاب Der C++-Programmierer: C++ lernen - Professionell anwenden - Lösungen nutzen به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب برنامه نویس C: C را بیاموزید - از راه حل های حرفه ای استفاده کنید نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
Inhaltsverzeichnis Vorwort Teil I: Einführung in C++ 1 Es geht los! 1.1 Historisches 1.2 Objektorientierte Programmierung 1.3 Compiler 1.4 Das erste Programm o 1.4.1 Namenskonventionen 1.5 Integrierte Entwicklungsumgebungen o 1.5.1 Code::Blocks o 1.5.2 Eclipse 1.6 Einfache Datentypen und Operatoren o 1.6.1 Ausdruck o 1.6.2 Ganze Zahlen o 1.6.3 Reelle Zahlen o 1.6.4 Konstante o 1.6.5 Zeichen o 1.6.6 Logischer Datentyp bool o 1.6.7 Referenzen o 1.6.8 Regeln zum Bilden von Ausdrücken o 1.6.9 Standard-Typumwandlungen 1.7 Gültigkeitsbereich und Sichtbarkeit o 1.7.1 Namespace std 1.8 Kontrollstrukturen o 1.8.1 Anweisungen o 1.8.2 Sequenz (Reihung) o 1.8.3 Auswahl (Selektion, Verzweigung) o 1.8.4 Fallunterscheidungen mit switch o 1.8.5 Wiederholungen o 1.8.6 Kontrolle mit break und continue 1.9 Benutzerdefinierte und zusammengesetzte Datentypen o 1.9.1 Aufzählungstypen o 1.9.2 Arrays: Der C++-Standardtyp vector o 1.9.3 Zeichenketten: Der C++-Standardtyp string o 1.9.4 Strukturen o 1.9.5 Typermittlung mit auto o 1.9.6 Unions und Bitfelder 2 Einfache Ein- und Ausgabe 2.1 Standardein- und -ausgabe 2.2 Ein- und Ausgabe mit Dateien 3 Programmstrukturierung 3.1 Funktionen o 3.1.1 Aufbau und Prototypen o 3.1.2 Gültigkeitsbereiche und Sichtbarkeit in Funktionen o 3.1.3 Lokale static-Variable: Funktion mit Gedächtnis 3.2 Schnittstellen zum Datentransfer o 3.2.1 Übergabe per Wert o 3.2.2 Übergabe per Referenz o 3.2.3 Gefahren bei der Rückgabe von Referenzen o 3.2.4 Vorgegebene Parameterwerte und variable Parameterzahl o 3.2.5 Überladen von Funktionen o 3.2.6 Funktion main() o 3.2.7 Beispiel Taschenrechnersimulation o 3.2.8 Spezifikation von Funktionen 3.3 Modulare Programmgestaltung o 3.3.1 Steuerung der Übersetzung nur mit #include o 3.3.2 Einbinden vorübersetzter Programmteile o 3.3.3 Dateiübergreifende Gültigkeit und Sichtbarkeit o 3.3.4 Übersetzungseinheit, Deklaration, Definition o 3.3.5 Compilerdirektiven und Makros 3.4 Funktions-Templates o 3.4.1 Spezialisierung von Templates o 3.4.2 Einbinden von Templates 3.5 inline-Funktionen 3.6 Namensräume 3.7 C++-Header o 3.7.1 Einbinden von C-Funktionen 4 Objektorientierung 1 4.1 Abstrakte Datentypen 4.2 Klassen und Objekte o 4.2.1 inline-Elementfunktionen 4.3 Initialisierung und Konstruktoren o 4.3.1 Standardkonstruktor o 4.3.2 Allgemeine Konstruktoren o 4.3.3 Kopierkonstruktor o 4.3.4 Typumwandlungskonstruktor 4.4 Beispiel: Rationale Zahlen o 4.4.1 Aufgabenstellung o 4.4.2 Entwurf o 4.4.3 Implementation 4.5 const-Objekte und Methoden 4.6 Destruktoren 4.7 Wie kommt man zu Klassen und Objekten? Ein Beispiel o 4.7.1 Einige Analyse-Überlegungen o 4.7.2 Formulierung des Szenarios in C++ 4.8 Gegenseitige Abhängigkeit von Klassen 4.9 Konstruktor und mehr vorgeben oder verbieten 4.10 Delegierender Konstruktor 5 Intermezzo: Zeiger 5.1 Zeiger und Adressen 5.2 C-Arrays o 5.2.1 C-Arrays und sizeof o 5.2.2 Indexoperator bei C-Arrays o 5.2.3 Initialisierung von C-Arrays o 5.2.4 Zeigerarithmetik 5.3 C-Zeichenketten 5.4 Dynamische Datenobjekte o 5.4.1 Freigeben dynamischer Objekte 5.5 Zeiger und Funktionen o 5.5.1 Parameterübergabe mit Zeigern o 5.5.2 Parameter des main-Programms o 5.5.3 Gefahren bei der Rückgabe von Zeigern 5.6 this-Zeiger 5.7 Mehrdimensionale C-Arrays o 5.7.1 Statische mehrdimensionale C-Arrays o 5.7.2 Dynamisch erzeugte mehrdimensionale Arrays o 5.7.3 Klasse für dynamisches zweidimensionales Array 5.8 Binäre Ein-/Ausgabe 5.9 Zeiger auf Funktionen 5.10 Komplexe Deklarationen lesen 5.11 Standard-Typumwandlungen für Zeiger 5.12 Zeiger auf Elementfunktionen und -daten o 5.12.1 Zeiger auf Elementfunktionen o 5.12.2 Zeiger auf Elementdaten 6 Objektorientierung 2 6.1 Eine String-Klasse o 6.1.1 Optimierung der Klasse MeinString o 6.1.2 friend-Funktionen 6.2 Klassenspezifische Daten und Funktionen o 6.2.1 Klassenspezifische Konstante 6.3 Klassen-Templates o 6.3.1 Ein Stack-Template o 6.3.2 Stack mit statisch festgelegter Größe 6.4 Template-Metaprogrammierung 6.5 Variadic Templates: Templates mit variabler Parameterzahl 7 Vererbung 7.1 Vererbung und Initialisierung 7.2 Zugriffsschutz 7.3 Typbeziehung zwischen Ober- und Unterklasse 7.4 Code-Wiederverwendung 7.5 Überschreiben von Funktionen in abgeleiteten Klassen Polymorphismus o Virtuelle Funktionen o Abstrakte Klassen o Virtueller Destruktor Probleme der Modellierung mit Vererbung Mehrfachvererbung o Namenskonflikte o Virtuelle Basisklassen Standard-Typumwandlungsoperatoren Typinformationen zur Laufzeit Using-Deklaration für Klassen Private- und Protected-Vererbung 8 Fehlerbehandlung 8.1 Ausnahmebehandlung o 8.1.1 Exception-Spezifikation in Deklarationen o 8.1.2 Exception-Hierarchie in C++ o 8.1.3 Besondere Fehlerbehandlungsfunktionen o 8.1.4 Erkennen logischer Fehler o 8.1.5 Arithmetische Fehler / Division durch 0 8.2 Speicherbeschaffung mit new 8.3 Exception-Sicherheit 9 Überladen von Operatoren 9.1 Rationale Zahlen -- noch einmal o 9.1.1 Arithmetische Operatoren o 9.1.2 Ausgabeoperator << 9.2 Eine Klasse für Vektoren o 9.2.1 Index-Operator [ ] o 9.2.2 Zuweisungsoperator = o 9.2.3 Mathematische Vektoren o 9.2.4 Multiplikationsoperator 9.3 Inkrement-Operator ++ 9.4 Typumwandlungsoperator 9.5 Smart Pointer: Operatoren -> und * o 9.5.1 Smart Pointer und die C++-Standardbibliothek 9.6 Objekt als Funktion o 9.6.1 Lambda-Funktionen 9.7 new und delete überladen o 9.7.1 Speichermanagement mit malloc und free o 9.7.2 Unterscheidung zwischen Heap- und Stack-Objekten o 9.7.3 Fehlende delete-Anweisung entdecken o 9.7.4 Eigene Speicherverwaltung o 9.7.5 Empfehlungen im Umgang mit new und delete 9.8 Mehrdimensionale Matrizen o 9.8.1 Zweidimensionale Matrix als Vektor von Vektoren o 9.8.2 Dreidimensionale Matrix 9.9 Zuweisung bei Vererbung 10 Dateien und Ströme 10.1 Ausgabe o 10.1.1 Formatierung der Ausgabe 10.2 Eingabe 10.3 Manipulatoren o 10.3.1 Eigene Manipulatoren 10.4 Fehlerbehandlung 10.5 Typumwandlung von Dateiobjekten nach bool 10.6 Arbeit mit Dateien o 10.6.1 Positionierung in Dateien o 10.6.2 Lesen und Schreiben in derselben Datei 10.7 Umleitung auf Strings 10.8 Ergänzungen 11 Einführung in die Standard Template Library (STL) 11.1 Container, Iteratoren, Algorithmen 11.2 Iteratoren im Detail 11.3 Beispiel verkettete Liste 12 Reguläre Ausdrücke 12.1 Elemente regulärer Ausdrücke o 12.1.1 Greedy oder lazy? 12.2 Interaktive Auswertung 12.3 Auszug des regex-APIs 12.4 Anwendungen 13 Threads 13.1 Die Klasse thread 13.2 Synchronisation o 13.2.1 Thread-Group 13.3 Thread-Steuerung: pausieren, fortsetzen, beenden 13.4 Interrupt 13.5 Warten auf Ereignisse 13.6 Reader/Writer-Problem o 13.6.1 Wenn Threads verhungern o 13.6.2 Reader/Writer-Varianten 13.7 Thread-Sicherheit Teil II: Bausteine komplexer Anwendungen 14 Grafische Benutzungsschnittstellen 14.1 Ereignisgesteuerte Programmierung 14.2 GUI-Programmierung mit Qt o 14.2.1 Meta-Objektsystem o 14.2.2 Der Programmablauf o 14.2.3 Speicher sparen und lokal Daten sichern 14.3 Signale, Slots und Widgets 14.4 Dialog 14.5 Qt oder Boost? o 14.5.1 Threads o 14.5.2 Verzeichnisbaum durchwandern 15 Internet-Anbindung 15.1 Protokolle 15.2 Adressen 15.3 Socket o 15.3.1 Bidirektionale Kommunikation o 15.3.2 UDP-Sockets o 15.3.3 Atomuhr mit UDP abfragen 15.4 HTTP o 15.4.1 Verbindung mit GET o 15.4.2 Verbindung mit POST 15.5 Mini-Webserver 16 Datenbankanbindung 16.1 C++-Interface 16.2 Anwendungsbeispiel Teil III: Praktische Methoden und Werkzeuge der Softwareentwicklung 17 Abläufe automatisieren mit make 17.1 Quellen 17.2 Wirkungsweise 17.3 Variablen und Muster 17.4 Universelles Makefile für einfache Projekte 18 Unit-Test 18.1 Werkzeuge 18.2 Test Driven Development 18.3 Boost Unit Test Framework o 18.3.1 Beispiel: Testgetriebene Entwicklung einer Operatorfunktion o 18.3.2 Fixture o 18.3.3 Testprotokoll und Log-Level o 18.3.4 Prüf-Makros o 18.3.5 Kommandozeilen-Optionen 19 Werkzeuge zur Verwaltung von Projekten 19.1 Dokumentation und Strukturanalyse mit doxygen o 19.1.1 Strukturanalyse 19.2 Versionskontrolle o 19.2.1 Einrichtung des Servers o 19.2.2 Exemplarische Benutzung 19.3 Projektverwaltung o 19.3.1 Projektmanagement o 19.3.2 Wiki für Software-Entwicklungsprojekte Teil IV: Das C++-Rezeptbuch: Tipps und Lösungen für typische Aufgaben 20 Sichere Programmentwicklung 20.1 Regeln zum Design von Methoden 20.2 Defensive Programmierung o 20.2.1 double- und float-Werte richtig vergleichen o 20.2.2 const verwenden o 20.2.3 Anweisungen nach for/if/while einklammern o 20.2.4 int und unsigned/size_t nicht mischen o 20.2.5 size_t oder auto statt unsigned int verwenden o 20.2.6 Postfix++ mit Präfix++ implementieren o 20.2.7 Ein Destruktor darf keine Exception werfen o 20.2.8 Typumwandlungsoperatoren vermeiden o 20.2.9 explicit-Konstruktoren bevorzugen o 20.2.10 Leere Standardkonstruktoren vermeiden o 20.2.11 Kopieren und Zuweisung verbieten o 20.2.12 Vererbung verbieten o 20.2.13 Defensiv Objekte löschen 20.3 Exception-sichere Beschaffung von Ressourcen o 20.3.1 Sichere Verwendung von shared_ptr o 20.3.2 shared_ptr für Arrays korrekt verwenden o 20.3.3 unique_ptr für Arrays korrekt verwenden o 20.3.4 Exception-sichere Funktion o 20.3.5 Exception-sicherer Konstruktor o 20.3.6 Exception-sichere Zuweisung 20.4 Aussagefähige Fehlermeldung ohne neuen String erzeugen 20.5 Empfehlungen zur Thread-Programmierung o 20.5.1 Warten auf die Freigabe von Ressourcen o 20.5.2 Deadlock-Vermeidung o 20.5.3 notify_all oder notify_one? o 20.5.4 Performance mit Threads verbessern? 21 Von der UML nach C++ 21.1 Vererbung 21.2 Interface anbieten und nutzen 21.3 Assoziation o 21.3.1 Aggregation o 21.3.2 Komposition 22 Performance, Wert- und Referenzsemantik 22.1 Performanceproblem Wertsemantik o 22.1.1 Auslassen der Kopie o 22.1.2 Temporäre Objekte bei der Zuweisung 22.2 Optimierung durch Referenzsemantik für R-Werte o 22.2.1 Bewegender Konstruktor o 22.2.2 Bewegender Zuweisungsoperator 22.3 Ein effizienter binärer Plusoperator o 22.3.1 Kopien temporärer Objekte eliminieren o 22.3.2 Verbesserung durch verzögerte Auswertung 23 Effektive Programmerzeugung 23.1 Automatische Ermittlung von Abhängigkeiten o 23.1.1 Getrennte Verzeichnisse: src, obj, bin 23.2 Makefile für Verzeichnisbäume o 23.2.1 Rekursive Make-Aufrufe o 23.2.2 Ein Makefile für alles 23.3 Automatische Erzeugung von Makefiles o 23.3.1 Makefile für rekursive Aufrufe erzeugen 23.4 Erzeugen von Bibliotheken o 23.4.1 Statische Bibliotheksmodule o 23.4.2 Dynamische Bibliotheksmodule 23.5 GNU Autotools 23.6 CMake 23.7 Code Bloat bei der Instanziierung von Templates vermeiden o 23.7.1 extern-Template o 23.7.2 Aufspaltung in Schnittstelle und Implementation 24 Algorithmen für verschiedene Aufgaben 24.1 Algorithmen mit Strings o 24.1.1 String splitten o 24.1.2 String in Zahl umwandeln o 24.1.3 Zahl in String umwandeln o 24.1.4 Strings sprachlich richtig sortieren o 24.1.5 Umwandlung in Klein- bzw. Großschreibung o 24.1.6 Strings sprachlich richtig vergleichen o 24.1.7 Von der Groß-/Kleinschreibung unabhängiger Zeichenvergleich o 24.1.8 Von der Groß-/Kleinschreibung unabhängige Suche 24.2 Textverarbeitung o 24.2.1 Datei durchsuchen o 24.2.2 Ersetzungen in einer Datei o 24.2.3 Code-Formatierer o 24.2.4 Lines of Code (LOC) ermitteln o 24.2.5 Zeilen, Wörter und Zeichen einer Datei zählen o 24.2.6 CSV-Datei lesen o 24.2.7 Kreuzreferenzliste 24.3 Operationen auf Folgen o 24.3.1 Container anzeigen o 24.3.2 Folge mit gleichen Werten initialisieren o 24.3.3 Folge mit Werten eines Generators initialisieren o 24.3.4 Folge mit fortlaufenden Werten initialisieren o 24.3.5 Summe und Produkt o 24.3.6 Mittelwert und Standardabweichung o 24.3.7 Skalarprodukt o 24.3.8 Folge der Teilsummen oder -produkte o 24.3.9 Folge der Differenzen o 24.3.10 Minimum und Maximum o 24.3.11 Elemente rotieren o 24.3.12 Elemente verwürfeln o 24.3.13 Dubletten entfernen o 24.3.14 Reihenfolge umdrehen o 24.3.15 Anzahl der Elemente, die einer Bedingung genügen o 24.3.16 Gilt X für alle, keins oder wenigstens ein Element einer Folge? o 24.3.17 Permutationen o 24.3.18 Lexikografischer Vergleich 24.4. Sortieren und Verwandtes o 24.4.1 Partitionieren o 24.4.2 Sortieren o 24.4.3 Stabiles Sortieren o 24.4.4 Partielles Sortieren o 24.4.5 Das n.-größte oder n.-kleinste Element finden o 24.4.6 Verschmelzen (merge) 24.5 Suchen und Finden o 24.5.1 Element finden o 24.5.2 Element einer Menge in der Folge finden o 24.5.3 Teilfolge finden o 24.5.4 Bestimmte benachbarte Elemente finden o 2.5.5 Bestimmte aufeinanderfolgende Werte finden o 24.5.6 Binäre Suche 24.6 Mengenoperationen auf sortierten Strukturen o 24.6.1 Teilmengenrelation o 24.6.2 Vereinigung o 24.6.3 Schnittmenge o 24.6.4 Differenz o 24.6.5 Symmetrische Differenz 24.7 Heap-Algorithmen o 24.7.1 pop_heap o 24.7.2 push_heap o 24.7.3 make_heap o 24.7.4 sort_heap o 24.7.5 is_heap 24.8 Vergleich von Containern auch ungleichen Typs o 24.8.1 Unterschiedliche Elemente finden o 24.8.1 Prüfung auf gleiche Inhalte 24.9 Rechnen mit komplexen Zahlen: Der C++-Standardtyp complex 24.10 Schnelle zweidimensionale Matrix o 24.10.1 Optimierung mathematischer Array-Operationen 24.11 Singleton o 24.11.1 Implementierung mit einem Zeiger o 24.11.2 Implementierung mit einer Referenz o 24.11.3 Meyers' Singleton 24.12 Vermischtes o 24.12.1 Erkennung eines Datums o 24.12.2 Erkennung einer IP-Adresse o 24.12.3 Erzeugen von Zufallszahlen o 24.12.4 for_each -- Auf jedem Element eine Funktion ausführen o 24.12.5 Verschiedene Möglichkeiten, Container-Bereiche zu kopieren o 24.12.6 Vertauschen von Elementen, Bereichen und Containern o 24.12.7 Elemente transformieren o 24.12.8 Ersetzen und Varianten o 24.12.9 Elemente herausfiltern o 24.12.10 Grenzwerte von Zahltypen o 24.12.11 Minimum und Maximum 25 Ein- und Ausgabe 25.1 Datei- und Verzeichnisoperationen o 25.1.1 Datei oder Verzeichnis löschen o 25.1.2 Datei oder Verzeichnis umbenennen o 25.1.3 Verzeichnis anlegen o 25.1.4 Verzeichnis anzeigen o 25.1.5 Verzeichnisbaum anzeigen 25.2 Tabelle formatiert ausgeben 25.3 Formatierte Daten lesen o 25.3.1 Eingabe benutzerdefinierter Typen 25.4 Array als Block lesen oder schreiben Teil V: Die C++-Standardbibliothek 26 Aufbau und Übersicht 26.1 Auslassungen 26.2 Beispiele des Buchs und die C++-Standardbibliothek 27 Hilfsfunktionen und -klassen 27.1 Relationale Operatoren 27.2 Unterstützung der Referenzsemantik für R-Werte 27.3 Paare 27.4 Tupel Funktionsobjekte o Arithmetische, vergleichende und logische Operationen o Funktionsobjekte zum Negieren logischer Prädikate o Binden von Argumentwerten o Funktionen in Objekte umwandeln Templates für rationale Zahlen Zeit und Dauer Hüllklasse für Referenzen 28 Container 28.1 Gemeinsame Eigenschaften o 28.1.1 Initialisierungslisten o 28.1.2 Konstruktion an Ort und Stelle o 28.1.3 Reversible Container 28.2 Sequenzen o 28.2.1 vector o 28.2.2 vectoro 28.2.3 list o 28.2.4 deque o 28.2.5 stack o 28.2.5 queue o 28.2.7 priority_queue o 28.2.8 array 28.3 Sortierte assoziative Container o 28.3.1 map o 28.3.2 multimap o 28.3.3 set o 28.3.4 multiset 28.4 Hash-Container o 28.4.1 unordered_map o 28.4.2 unordered_multimap o 28.4.3 unordered_set o 28.4.4 unordered_multiset 28.5 bitset 29 Iteratoren 29.1 Iterator-Kategorien o 29.1.1 Anwendung von Traits 29.2 distance() und advance() 29.3 Reverse-Iteratoren 29.4 Insert-Iteratoren 29.5 Stream-Iteratoren 30 Algorithmen 30.1 Algorithmen mit Prädikat o 30.1.1 Algorithmen mit binärem Prädikat 30.2 Übersicht 31 Nationale Besonderheiten 31.1 Sprachumgebungen festlegen und ändern o 31.1.1 Die locale-Funktionen 31.2 Zeichensätze und -codierung 31.3 Zeichenklassifizierung und -umwandlung 31.4 Kategorien o 31.4.1 collate o 31.4.2 ctype o 31.4.3 numeric o 31.4.4 monetary o 31.4.5 time o 31.4.6 messages 31.5 Konstruktion eigener Facetten 32 String Speichermanagement 33.1 Smart Pointer unique_ptr, shared_ptr, weak_ptr 33.2 new mit vorgegebenem Speicherort 33.3 Hilfsfunktionen 34 Optimierte numerische Arrays (valarray) 34.1 Konstruktoren 34.2 Elementfunktionen 34.3 Binäre Valarray-Operatoren 34.4 Mathematische Funktionen 34.5 slice und slice_array 34.6 gslice und gslice_array 34.7 mask_array 34.8 indirect_array 35 C-Header 35.1 35.2 35.3 35.4 35.5 35.6 35.7 35.8 35.9 35.10 A Anhang A.1 Programmierhinweise A.2 C++-Schlüsselwörter A.3 ASCII-Tabelle A.4 Rangfolge der Operatoren A.5 Compilerbefehle A.6 Lösungen zu den Übungsaufgaben A.7 Installation der DVD-Software für Windows A.7.1 Installation des Compilers und der Entwicklungsumgebung A.7.2 Installation der Boost-Bibliothek A.7.3 Installation von Qt A.7.4 Codeblocks einrichten A.7.5 Integration von Qt in ein Code::Blocks-Projekt A.7.6 Bei Verzicht auf die automatische Installation A.8 Installation der DVD-Software für Linux A.8.1 Installation des Compilers A.8.2 Installation von Boost A.8.3 Installation von Code::Blocks A.8.4 Code::Blocks einrichten A.8.5 Beispieldateien entpacken A.8.6 Installation von Qt4 A.8.7 Integration von Qt in ein Code::Blocks-Projekt Glossar Literaturverzeichnis Register