Effektives modernes C++

Effektives modernes C++

 

 

 

von: Scott Meyers

O'Reilly Verlag, 2015

ISBN: 9783958750517

Sprache: Deutsch

320 Seiten, Download: 1579 KB

 
Format:  EPUB, PDF, auch als Online-Lesen

geeignet für: geeignet für alle DRM-fähigen eReader geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Apple iPod touch, iPhone und Android Smartphones Online-Lesen PC, MAC, Laptop
Typ: A (einfacher Zugriff)

 

eBook anfordern

Mehr zum Inhalt

Effektives modernes C++



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]...

Kategorien

Service

Info/Kontakt

  Info
Hier gelangen Sie wieder zum Online-Auftritt Ihrer Bibliothek