More Effective C++: 35 New Ways to Improve Your Programs and Designs
C**Y
Top Notch C++ Advice For Novices or Pros. A Classic.
I decided to break from my 3D game engine book marathon and go to something more fundamental. More Effective C++ by Scott Meyers is one of those books I have had on my wishlist for years but just hadn’t got around to reading yet. I had read the original book Effective C++ some years ago, and this sequel very much follows the same form. Though slightly dated now, it does cover a good amount of C++ design considerations that will show up in almost any decently complex C++ application.The book covers a lot of OOP (object oriented programming) concepts and designs, and also a lot of the trouble you can get into using C++ without fully understanding what you are doing. Some of the coverage includes how to use abstract base classes and virtual functions. Specifically Meyers talks about memory management issues with construction and destruction, temporary objects, passing by value versus pointer/reference, and overloading copy/assignment constructors. He also discusses problems with using exceptions, explains how to write a smart pointer class (which is now obsolete with C++11, but still good to understand the implementation), using proxy objects, how to do lazy evaluation, and some various odds and ends.Overall I found this to be a great text and very helpful, especially the discussion on inheritance and abstract base classes. If you really want to understand C++, warts and all, this should be a required text. However, please read the original title first, as it covers some more fundamental concepts than in the second text. Recommended.
P**H
Every C++ Programmer can use this book
This is a set of do's and don'ts by one of the master C++ programmers / consultants that is still currently active. I believe anyone doing C++ coding will benefit from this book today and in the future. It is useable as a book -- reading it cover to cover or as a reference to refer back about that little thingy that you can't quite remember. Scott has three books very similar. I bought all of them several years ago and praise them to this day.
A**G
Very good, though no longer indispensable
This is the sequel to Scott Meyers' classic "Effective C++". When it came out (in 1996) "More Effective C++" complemented the material in "Effective C++" very well. Since then, "Effective C++" has been fully updated (3rd ed., 2005), therefore the two books are, strictly speaking, no longer complementary. Since its first publication, "More Effective C++" has only been changed in minor ways, mainly through the addition of footnotes (some of which go against the advice in the main text, see Items 14, 18, 20, & 26).The Good: as in his earlier volume, Meyers' writing is easygoing and occasionally funny, e.g. "If BookEntry's constructor throws an exception, pb will be the null pointer, so deleting it in the catch block does nothing except make you feel better about yourself." (Item 10). Despite the overlap with other books noted above (and below), some of the material is both important and not covered elsewhere, especially the stuff on proxy classes and efficiency. In the case of the latter, I really appreciated the table in Item 24 discussing the costs of virtual functions, multiple inheritance, virtual base classes, and RTTI. In a number of places, Meyers elucidates the established terminology of the C++ community. For example, the "return value optimization" you may have heard of amounts to returning constructor arguments instead of objects (Item 20). A notable exception to this terminological clarity is RAII: though he explains the concept, he does not mention the term itself. In typical "tips & tricks" fashion, Meyers presents a large number of useful tidbits of information, a few of which I mention below. Some of these are more or less obvious, but others are less straightforward: a) a sequence of conversions cannot contain more than one user-defined conversion (Item 5), b) postfix increment/decrement operators take an int argument (Item 6), c) passing a temporary object to a non-const reference parameter is not allowed for function calls, but it is for exceptions (Item 12), and d) creating a class template where the type template parameter apparently is never used can help you get separate copies of the static members when the template is instantiated for different types (Item 26).The Bad: in my opinion, after reading a detailed introductory book the main three things a C++ programmer needs practice with and further instruction on are: a) condensed lore on object-oriented programming, including design idioms and patterns, b) templates, encompassing template metaprogramming, and c) the Standard Template Library, meaning its containers, iterators, and algorithms. (With the coming of the new standard I guess one should add multithreading to this list). The problem is, this book was published in 1996, when all three of these concepts were new(ish) (e.g. Meyers discusses Singleton but he doesn't call it that) so they do not get the treatment they deserve here. Today, Meyers' own "Effective C++, 3rd edition" (2005) does a fine job of discussing templates in more detail as well as introducing a few design patterns. Even more information on these subjects, broken down into bite-sized chunks, can be found in Steve Dewhurst's "C++ Common Knowledge" (2005) and Herb Sutter's "Exceptional C++" (2000). Finally, Meyers' own "Effective STL" contains advice on the STL that is considerably broader and more detailed than what is included in the present tome. The book's time-dependence is obvious in other ways, too, ranging from trivial matters (e.g. in Item 28 the two classes derived from MusicProduct are CD and... Cassette), to topics that are now irrelevant at best (e.g. what to do if your compiler doesn't support new-style casts or the explicit keyword), and even including fundamental issues (e.g. so much attention to auto_ptr seems misplaced today, when we have access to things like shared_ptr and unique_ptr). Finally, in contradistinction to "Effective C++", most Items in "More Effective C++" do not end with a "Summary" section. Given that they are also longer, this interferes with the reader's ability to quickly bring to mind each Item's lessons.In a nutshell, I believe that this book is no longer the best "third book" on C++ (the first one being a solid introduction like the "C++ Primer" and the second one being none other than "Effective C++, 3rd edition"). It looks like the niche that this book filled when it came out has been taken over by more recent volumes, including Meyers' other works. With C++0x on the horizon and the barrage of new editions about to appear, this will only become more so. However, Meyers' writing is very good and his advice is authoritative, so I definitely did not regret reading this volume.Alex Gezerlis
A**R
A bit dated.
Unlike Effective C++: 55 Specific Ways to Improve Your Programs and Designs, this book has not been updated or re-released. It is from the 90's and therefore it is seriously out of date with respect to modern C++. Many of the items don't really apply any more. For instance the usage of things like auto_ptr is discussed, one of the first standard implementations of a smart pointer which has long been replaced by shared_ptr and unique_ptr along with c++11 move semantics. Nevertheless, there were still a few items in here which are still relevant, and I learnt a few things and tricks that I didn't know.If you are interested in reading Scott Meyers, I would first read 55 Specific way, along with Modern C++, 40 ways and Effective STL 50 ways. If you want more after reading those three books, then perhaps read this.
A**A
A little bit outdated but still a a very good book
In my opinion, Effective C++ is 80% C++ pitfalls and 20& idioms. On the other hand, More Effective C++ is 50% pitfalls and 30% design and 20& idioms. Both books are different (even the writing style) and I disagree with an earlier review claiming that there are overlap on each other. I don't think is a must for a serious C++ developer, but I enjoyed most of the topics.
C**Y
Wow amazing
The example are really clear. Scott Meyers make it clear what the compilers will generate from the C++ code. My favorite item is on the reference counting object. It is a great add-ons to the Effective C++ book. One book a C++ programmer must have in his toolbox.
J**.
Required reading for C++ programmers
If you program in C++, this book is a must for your collection. Read it. It will make you a better C++ programmer.
D**.
Good read for any regular C++ programmer.
Good read for any regular C++ programmer. This book is written in a conversational and easy to read tone. It has many useful rules of thumb WITH justifications which I find to be a good format and easy to remember for the technically minded individual.
S**R
I haven't read a book on c++, which is as effective as this
Nice packaging. Nice topic covergae in book.
A**R
Five Stars
Very good!
S**E
C'est du Scott Meyers
Très bon livre qui nous apprend à mieux coder, même si à la fin, ça ne servira qu'à nous même vu qu'au travail 99% des gens ne lisent pas ce genre de livre...
H**H
Five Stars
I love it.
K**L
Very informative and knowledgeable
If you are a programmer, and want to improve your C++ programming skills, you should read this. I bought it when I was a C++ programmer, now I am a senior programmer :-)
Trustpilot
4 days ago
1 month ago