books and I have no problem proclaiming this as simply the best. Other books may cover more ground (Stroustrup's books, for example), others may be more current and others may be more advanced (I've recently been humbled by "Exceptional C++") but I think "Effective C++" is the most useful.If you're looking for a book to teach you the language, or if you're just learning the language, I'd say wait a little while before reading this book. If you've been writing code and haven't read this book, go for it. Although it's dated (pre-standard library) the concepts it covers are important ones that have not disappeared after standardization.
I hope that when I write my book, "Extraterrestrial C++," I can do half as good a job.
| If you are serious about C++... |      |
...this book is for you. Both "50 Specific Ways" and his second book "35 More Ways" have helped me bring my C++ programming up to the next level of understanding. After using C for more than 10 years and C++ for all but the first few of those years, there were still many small things that used to bug me. Problems with some of my constructors, strange constructs I'd discovered over the years but never 100% understood... Scott's books have not only cleared the field, but have brought to my attention many new things about objects and C++ I'd never previously considered.One warning: I found that some items were too far above me when I first read through the books -- especially his second book, "35 more ways..." However, once I'd finished reading the book, I started again right back at page 1, and my second (and 3rd, 4th...) reading made much more sense. There is a *lot* of helpful information packed into Scott's 85 items.
I recommend picking up both books at once, or, I believe a special edition is available with both books condensed into 1 volume.
| Don't write C++ without it! |      |
After having spent several years programming in C and dabbling in C++ here and there, I felt I had a pretty good grasp of C++. However, after finishing this book, I found myself boldly corrected. The book covers answers to questions that I hadn't even realized that I should be asking. Reading C++ reference books teach you the syntax but completely hide the level of complexity as to what's really going on behind the scenes. To use a quote from the book "Saying what you mean is only half the battle. The flip side of the coin is understanding what you're saying, and it's just as important."
What happens if you override a non-virtual function? What does private inheritance do and why would you want to use it? What code will the compiler automatically generate for you if you fail to do so yourself? When should you use references to objects versus the objects themselves? The list goes on and on. It covers the topics of Memory Management, Constructors & Destructors, Operator Overloading, Design & Decleration of Classes and Functions, Implementation, Inheritance and Object Oriented Design. But, most importantly, for every answer - there is a logical explanation of *why* things are the way that they are.
Reading this book gave me a new appreciation for the complexity behind C++. It is not a book on syntax, so this should not be the 1st C++ book that you read -- but it should *definitely* be the 2nd!
Meyers has an excellent, and amusing(!) writing style which makes the book much easier to read then you'd expect from a technical book. The concepts might still make your brain hurt if you're new to C++, but keep at it -- before you write any C++ code you need to understand what's going on behind the scenes and this book will show it to you.