Effektives modernes C++ (eBook)

(Autor)

eBook Download: PDF | EPUB
2015 | 1. Auflage
320 Seiten
O'Reilly Verlag
978-3-95875-051-7 (ISBN)

Lese- und Medienproben

Effektives modernes C++ -  Scott Meyers
Systemvoraussetzungen
Systemvoraussetzungen
36,90 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
Um richtig in C++11 und C++14 einzusteigen, reicht es nicht aus, sich mit den neuen Features vertraut zu machen. Die Herausforderung liegt darin, sie effektiv einzusetzen, so dass Ihre Software korrekt, effizient, wartbar und portabel ist. Hier kommt dieses praxisnahe Buch ins Spiel: Es beschreibt, wie Sie wirklich gute Software mit C++11 und C++14 erstellen - also modernes C++ einsetzen. Scott Meyers' Effective C++-Bestseller gelten seit mehr als 20 Jahren als herausragende C++-Ratgeber. Seine klaren, verbindlichen Erläuterungen komplexer technischer Materie haben ihm eine weltweite Anhängerschaft beschert. In diesem Buch nutzt Scott Meyers wieder das bewährte beispielorientierte Konzept seiner früheren Bücher, um Ihnen den optimalen Einsatz von C++11 und C++14 zu veranschaulichen. Das Buch ist Pflichtlektüre für jeden modernen C++-Softwareentwickler.

Danksagung


Ich begann mit meinen Nachforschungen rund um C++0x (das dann zu C++11 werden sollte) im Jahr 2009. In der Usenet-Newsgroup comp.std.c++ stellte ich viele Fragen, und ich bin den Mitgliedern dieser Community (insbesondere Daniel Krügler) für ihre sehr hilfreichen Postings ausgesprochen dankbar. In den letzten Jahren habe ich mich dann eher auf Stack Overflow[1] herumgetrieben, wenn ich Fragen zu C++11 und C++14 hatte, und auch da bin ich der Community genauso für ihre Hilfe dankbar, die mich bei den Details des modernen C++ nicht allein gelassen hat. 

2010 habe ich Materialien für einen Kurs zu C++0x vorbereitet (der schließlich als Overview of the New C++[2] von Artima Publishing im Jahr 2010 veröffentlicht wurde). Sowohl diese Materialien als auch mein Wissen profitierten von den Testlesern Stephan T. Lavavej, Bernhard Merkle, Stanley Friesen, Leor Zolman, Hendrik Schober und Anthony Williams. Ohne ihre Hilfe hätte ich mich bestimmt nicht an Effektives Modernes C++ herangewagt. Der englische Titel Effective Modern C++ wurde übrigens von einer Reihe von Lesern vorgeschlagen, als ich am 18. Februar 2014 mein Blog-Posting »Help me name my book«[3] veröffentlichte und Andrei Alexandrescu (Autor von Modern C++ Design[4], Addison-Wesley, 2001) war so freundlich, dem Titel seinen Segen zu geben und nicht darauf zu bestehen, dass dies sein Begriff sei.  

Ich kann nicht mehr alle Quellen angeben, auf denen die Informationen in diesem Buch beruhen, aber manche hatten dann doch einen ziemlich direkten Einfluss. Die Verwendung eines nicht definierten Templates in Technik 4, um dem Compiler Typ-Informationen zu entlocken, wurde von Stephan T. Lavavej vorgeschlagen, während mich Matt P. Dziubinski auf Boost.TypeIndex aufmerksam machte. In Technik 5 stammt das Beispiel mit dem unsigned-std::vector<int>::size_type aus Andrey Karpovs Artikel »In what way can C++0x standard help you eliminate 64-bit errors«[5] vom 28. Februar 2010. Das Beispiel rund um std::pair<std::string, int>/std::pair<const std::string int> aus der gleichen Technik stammt aus Stephan T. Lavavejs Vortrag »STL11: Magic && Secrets«[6], den er auf der Going Native 2012 gehalten hat. Technik 6 wurde von Herb Sutters Artikel »GotW #94 Solution: AAA Style (Almost Always Auto)«[7] vom 12. August 2013 inspiriert. Die Idee zu Technik 9 stammt von Martinho Fernandes' Blog-Post »Handling dependent names«[8] vom 27. Mai 2012. Das Beispiel aus Technik 12 mit dem Überladen von Referenz-Qualifiern basiert auf Caseys Antwort auf die Frage »Wozu kann man Member-Funktionen von Referenz-Qualifiern überladen?«[9], die am 14. Januar 2014 auf Stack Overflow gestellt wurde. Meine Behandlung der in C++14 erweiterten Unterstützung von constexpr-Funktionen in Technik 15 greift auf Informationen zurück, die ich von Rein Halbersma erhielt. Technik 16 basiert auf Herb Sutters Präsentation »You don’t know const and mutable« von der C++ and Beyond 2012. Der Vorschlag in Technik 18, Fabrikfunktionen einen std::unique_ptr zurückgeben zu lassen, baut auf Herb Sutters Artikel »GotW# 90 Solution: Factories«[10] vom 30. Mai 2013 auf. In Technik 19 ist fastLoadWidget von Herb Sutters Präsentation »My Favorite C++ 10-Liner«[11] auf der Going Native 2013 inspiriert. Meine Behandlung von std::unique_ptr und unvollständigen Typen in Technik 22 nutzt Herb Sutters Artikel »GotW #100: Compilation Firewalls«[12] vom 27. November 2011, aber auch Howard Hinnants Antwort vom 22. Mai 2011 auf die Stack-Overflow-Frage »Muss std::unique_ptr<T> die vollständige Definition von T kennen?«[13]. Das Matrix-Additions-Beispiel aus Technik 25 basiert auf Texten von David Abrahams. JoeArgonnes Kommentar vom 8. Dezember 2012 zum Blog-Post »Another alternative to lambda move capture«[14] vom 30. November 2012 diente als Quelle für das std::bind-basierte Vorgehen in Technik 32, um Init Captures in C++11 zu emulieren. Die Erläuterungen in Technik 37 zum Problem mit einem impliziten Detach im Destruktor von std::thread stammen aus Hans-J. Boehms Artikel »N2802: A plea to reconsider detach-on-destruction for thread objects«[15] vom 4. Dezember 2008. Technik 41 wurde ursprünglich durch eine Diskussion in den Kommentaren zu David Abrahams Blog-Post »Want speed? Pass by value.«[16] vom 15. August 2009 inspiriert. Die Idee, dass Move-Only-Typen eine besondere Behandlung benötigen, stammt von Matthew Fioravante, während die Analyse des zuweisungs-basierten Kopierens auf Kommentaren von Howard Hinnant aufbaut. In Technik 42 haben mir Stephan T. Lavavej und Howard Hinnant dabei geholfen, die relativen Performance-Profile von Emplacement- und Insertion-Funktionen zu verstehen, während mich Michael Winterberg darauf aufmerksam machte, wie ein Emplacement zu Ressourcenlecks führen kann. (Michael bezieht sich dabei auf Sean Parents Präsentation »C++ Seasoning«[17] von der Going Native 2013.) Auch hat er beschrieben, wie Emplacement-Funktionen die direkte Initialisierung nutzen, während Insertion-Funktionen eine Copy-Initialisierung verwenden.

Das Korrekturlesen von Entwürfen eines technisch orientierten Buchs ist eine anspruchsvolle, zeitaufwendige und kritische Aufgabe, und ich bin froh, dass so viele Leute das für mich getan haben. Komplette Versionen oder Teile von Effective Modern C++ wurden von Cassio Neri, Nate Kohl, Gerhard Kreuzer, Leor Zolman, Bart Vandewoestyne, Stephan T. Lavavej, Nevin »:-)« Liber, Rachel Cheng, Rob Stewart, Bob Steagall, Damien Watkins, Bradley E. Needham, Rainer Grimm, Fredrik Winkler, Jonathan Wakely, Herb Sutter, Andrei Alexandrescu, Eric Niebler, Thomas Becker, Roger Orr, Anthony Williams, Michael Winterberg, Benjamin Huchley, Tom Kirby-Green, Alexey A Nikitin, William Dealtry, Hubert Matthews und Tomasz Kamiński offiziell Korrektur gelesen. Zudem erhielt ich Kommentare von vielen Lesern über O’Reilly’s Early Release EBooks[18] und Safari Books Online’s Rough Cuts[19], über Kommentare in meinem Blog (The View from Aristeia[20]) und per E-Mail. Ich bedanke mich bei jedem für seine Hilfe, denn so konnte das Buch viel besser werden. Ich bin insbesondere Stephan T. Lavavej und Rob Stewart zu großem Dank verpflichtet, da mich ihre außerordentlich detaillierten und umfassenden Anmerkungen vermuten lassen, dass sie genauso viel Zeit mit diesem Buch verbracht haben wie ich. Ein besonderer Dank geht zudem an Leor Zolman, der neben dem Lesen des Skripts auch noch alle Codebeispiele doppelt kontrollierte.

Speziell die digitalen Versionen dieses Buchs wurden zur Kontrolle von Gerhard Kreuzer, Emyr Williams und Bradley E. Needham gelesen.

Meine Entscheidung, die Zeilenlänge in den (englischsprachigen) Codebeispielen auf 64 Zeichen zu beschränken (wodurch sich der Code sowohl im Druck als auch auf vielen digitalen Geräten unabhängig von Ausrichtung und Schriftart ordentlich anzeigen lässt), basiert auf Daten von Michael Maher.

Ashley Morgan Williams sorgte dafür, dass das Essen im Lake Oswego Pizzicato immer besonders unterhaltsam war. Wenn es um gigantischen Caesar-Salat geht, ist sie die richtige Adresse.

Über 20 Jahre nach meinem ersten Einsatz als Autor hat meine Frau Nancy L. Urbano erneut viele Monate eingeschränkter Kommunikation mit mir mit einer Mischung aus Resignation, Verzweiflung sowie Verständnis und Unterstützung im richtigen Moment ertragen. In der gleichen Zeit hat sich unser Hund Darla einen Großteil der Zeit damit zufriedengegeben, stundenlang zu dösen, während ich auf den Computermonitor starrte. Aber Darla vergaß nie, mich daran zu erinnern, dass es ein Leben jenseits der Tastatur gibt.


[1] http://stackoverflow.com/

[2] http://www.artima.com/shop/overview_of_the_new_cpp

[3] http://scottmeyers.blogspot.com/2014/02/help-me-name-my-book.html

[4] http://erdani.com/index.php/books/modern-c-design/

[5] http://www.viva64.com/en/b/0060/

[6] http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/STL11-Magic-Secrets

[7] http://herbsutter.com/2013/08/12/gotw-94-solution-aaa-style-almost-always-auto/

[8] http://flamingdangerzone.com/cxx11/2012/05/27/dependent-names-bliss.html

[9] http://stackoverflow.com/questions/21052377/whats-a-use-case-for-overloading-member-functions-on-reference-qualifiers

[10]...

Erscheint lt. Verlag 15.7.2015
Übersetzer Thomas Demmig
Verlagsort Heidelberg
Sprache deutsch
Themenwelt Informatik Programmiersprachen / -werkzeuge C / C++
Schlagworte C++11 • C++14 • Programmiersprache • Programmierung • Softwareprogrammierung
ISBN-10 3-95875-051-6 / 3958750516
ISBN-13 978-3-95875-051-7 / 9783958750517
Haben Sie eine Frage zum Produkt?
PDFPDF (Ohne DRM)
Größe: 1,6 MB

Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopier­schutz. Eine Weiter­gabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persön­lichen Nutzung erwerben.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schränkt geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

EPUBEPUB (Ohne DRM)
Größe: 2,5 MB

Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopier­schutz. Eine Weiter­gabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persön­lichen Nutzung erwerben.

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Das umfassende Handbuch

von Torsten T. Will

eBook Download (2024)
Rheinwerk Computing (Verlag)
37,43
Das umfassende Handbuch

von Jürgen Wolf; René Krooß

eBook Download (2023)
Rheinwerk Computing (Verlag)
37,43
C++ lernen – professionell anwenden – Lösungen nutzen

von Ulrich Breymann

eBook Download (2023)
Carl Hanser Verlag GmbH & Co. KG
49,99