it-swarm.com.de

Ist C ++ noch wirksam?

Nach dem, was ich in diesem Beitrag gesehen habe, habe ich beschlossen, das Buch Effective C++ zu lesen.

Aber jetzt, da es aufgrund von C++ 11 viele neue Funktionen gibt und sich einige der bewährten Methoden geändert haben, bin ich mir nicht sicher, ob dies tatsächlich eine gute Idee ist oder nicht. Hat das Aufkommen von C++ 11 einen der in Effective C++ enthaltenen Ratschläge verworfen? Wenn ja, welche Themen sollte ich vermeiden?

134
German Capuano

Das hatte Scott Meyers selbst in seinem eigenen Blog zu sagen

Was Sie möglicherweise fragen lässt, ob die Informationen und Ratschläge in dieser Version vor C++ 0x von Effective C++ weiterhin relevant sind. Ich freue mich, Ihnen mitteilen zu können, dass dies der Fall ist. Überraschenderweise sogar. Nachdem ich fast zwei Jahre mit den Details von C++ 0x verbracht hatte, erwartete ich ein Stöhnen, als ich das Inhaltsverzeichnis dieses Buches im Hinblick auf C++ 0x überprüfte. Sicherlich wären einige Artikel unangemessen. Aber der Rat, den ich fand, erwies sich als richtig. Sollten C++ 0x-Entwickler Konstanten, Enums und Inlines gegenüber #defines (Punkt 2) bevorzugen? Sie sollten. Sollten sie verhindern, dass Ausnahmen Destruktoren verlassen (Punkt 8)? Bestimmt. Sollten sie Objekte zum Verwalten von Ressourcen verwenden? Daten als privat deklarieren? Überlegen Sie Alternativen zu virtuellen Funktionen? Faktorparameterunabhängiger Code aus Templates? (Punkte 13, 22, 35 und 44.) Ja, ja, ja, ja! Mein Ziel war es immer, dass das Inhaltsverzeichnis von Effective C++ die Ratschläge in dem Buch zusammenfasst, und diese Zusammenfassung gilt für die C++ 0x-Entwicklung genauso wie für die „traditionelle“ C++ - Entwicklung. C++ 0x ist eine größere und in mancher Hinsicht andere Sprache, aber die Kerntechniken zur effektiven Nutzung von „altem“ C++ sind auch die Kerntechniken zur effektiven Nutzung von C++ 0x.

Dies bedeutet nicht, dass dieses effektive C++ perfekt zu C++ 0x passt. In diesem Buch werden keine neuen Funktionen in C++ 0x behandelt. Daher fehlen Informationen zur effektiven Nutzung dieser Funktionen. In einem C++ 0xified Effective C++ wären sicherlich Elemente für Verschiebeoperationen, für die einheitliche Initialisierung und für Lambda-Ausdrücke vorgesehen, und es würde wahrscheinlich ein ganzes Kapitel über die effektive Verwendung der Parallelitäts-API enthalten. Ein solches Buch würde auch verschiedene Beispiele enthalten, z. B. solche, die automatische Variablen verwenden, bereichsbezogene for-Schleifen, Standardinitialisierer in der Klasse sowie gelegentliche variadische Vorlagen. In dem Maße, in dem dieses Buch C++ 0x nicht unterstützt, handelt es sich bei den Fehlern um Auslassungen und nicht um Provisionen.

[~ # ~] Update [~ # ~] : der neue Titel Effective Modern C++ steht seit November 2014 zum Verkauf von O'Reilly und Amazon (und viele andere, nach denen Sie googeln können).

88
TemplateRex

Ja, auf jeden Fall noch lesenswert. Es gibt ein neues Buch, an dem Scott arbeitet: Effective C++ 11 , das sich nur auf C++ 11 konzentriert Code. Das Effektive C++ ist immer noch sehr relevant und wird vom neuen Buch nicht abgelöst. Kaufen, lesen, genießen :)

44
cdmh

Zum einen ist das Buch natürlich noch für C++ 03 gültig.

Zweitens, Meyers schreibt oder hat geschrieben, je nachdem, wann Sie diesen Satz lesen: Effective C++ 11.

Drei, allgemein gesprochen, die Punkte dieses Buches werden immer noch gültig sein. C++ ist immer noch schneller als die Sicherheit, und viele Probleme in Effective C++ drehen sich darum.

Die nur Art von Punkt, von dem ich erwarten würde, dass er ungültig ist, sind diejenigen, die sagen: "Tu das nicht, tu das stattdessen." "Mach das nicht" ist weiterhin gültig. Aber C++ wird einige Probleme gelöst haben. Insbesondere Empfehlungen zur Verwendung von Boost werden wahrscheinlich nicht mehr empfohlen, da C++ 11 viele der Funktionen enthält, für die Meyers den Leser speziell auf Boost hinweist.

20
djechlin