Back to Business Best Books of the Month Valentine's Day Shop Learn more nav_sap_SWP_6M_fly_beacon St Lucia Bose SoundTouch 130 Amazon Fire TV Stick Valentine's Day Cards Find the Best Purina Pro Plan for Your Pet Amazon Gift Card Offer chiraq chiraq chiraq  Amazon Echo Starting at $49.99 Kindle Voyage Prime Exclusive Savings in Video Games Shop Now Sale

Your rating(Clear)Rate this item

There was a problem filtering reviews right now. Please try again later.

on May 27, 2005
How do you improve a book that has been known as a "bible" in the C++ community for years? As Scott mentions at the beginning of the text, he almost threw everything out, and started from scratch. When I first say the book, I thought that there are five new items that were added to the book, but I couldn't be more wrong. As you might have guessed, C++ has gone thru a number of significant changes over the past decade, and the third edition of this book is updated to take advantage of the new editions to the C++ standard. In reality, almost every item in this book has gone thru a re-write. Many have been consolidated and new chapters, topics and many new items have been added. A few items that did not make sense anymore like items 2, 3 and 4 in the second edition are removed from this third edition.

Scott breaks down the c++ language into 4 subparts:

* The old C subsystem. Before all these advanced programming languages such as Java and .NET came, C was the language of choice. C++ is "translated" to C first, and then complied and linked to an executable.

* OO C++, which is C with Classes. This is where the concept of Object Orientation in C++ started. Even though this concept was very much new a decade ago, it is very much part of a programmer's vocabulary.

* Template C++, which is the newest edition to the C++ standard and it brings with it the concept of Template Metaprogramming. This concept is very much new, and this book has dedicated a whole chapter around templates, and template metaprogramming.

* STL, which is the C++ Standard Template Library. Again, STL was a new concept a few years back, but it is very much an established notion in C++.

Scott has taken a new approach to this book and has covered all four of these subparts. He has a book dedicated to STL, but he is using STL notions and "language" throughout this book. The chances are that the reader is already familiar with other languages such as Java and .Net, so the text covers area where these two languages differ with C++, especially in the area of inheritance and polymorphism. But not everything has changed. Topics such as,"Explicitly disallow the use of Compiler Generated functions you do not want," will never get old or outdated.

New chapters cover topics such as C++ Template and Generic Programming, Resource Allocation and topics that cover the latest C++ standard and additions, including the TR1 (Technical Report 1). "new and delete" have been separated into their own chapter, and the author goes into great depth demonstrating to the reader the various ways that these two operators can be modified, and why.

Exceptions and programming in light of exceptions is also a very new concept in C++. The previous versions on this text did not touch on exceptions all that much, but the author has spread the use of exceptions throughout the text, with a number of items dedicated explicitly to exceptions and exceptions handling.

The updated items, new topics and chapters and a new look and feel of the text with color coded examples make this book a joy to for C++ programmer to read.
0Comment65 of 67 people found this helpful. Was this review helpful to you?YesNoReport abuse
on March 8, 2009
I really wanted to purchase this book for my Kindle 2 so I could reference it wherever I go. Unfortunately, the conversion to Kindle format made it much more difficult to read, mostly due to the fact that the code samples do not format correctly on the device. I imagine that the book needs to be re-converted to make use of the fixed-width font capabilities that are present in the newer Kindle software. Until they fix the formatting for Kindle, the print version is the only one I would recommend.
88 comments82 of 88 people found this helpful. Was this review helpful to you?YesNoReport abuse
on June 15, 2005
"Effective C++: 55 Specific Ways to Improve Your Programs and Designs" recently came out in its 3rd edition. The first came out in 1991, making this line of book revisions positively ancient in high tech terms. But you should consider the elapsed 14 years an investment in wisdom, not obsolescence. Unlike the 2nd edition, this is a complete rewrite from the ground up. More than that, Scott Meyers begins from first principles, reevaluating what topics are most important to the programmers of 2005.

This was a very strategic and insightful move. Not only has the language evolved over that time, but the audience has too. In the first edition, the likely readers were coming from languages like C. Now the likely readers cross over from some other object-orient language, like Java or C#. Keep in mind

that the author focuses strictly on standard C++; he does not address anything that is platform-specific.

Like its predecessors, the items can be read stand-alone, and he does cross reference related items. The 55 items are grouped into the following chapters:

Chapter 1: Accustoming Yourself to C++

Chapter 2: Constructors, Destructors, and Assignment Operators

Chapter 3: Resource Management

Chapter 4: Designs and Declarations

Chapter 5: Inheritance

Chapter 6: Implementations and Object-Oriented Design

Chapter 7: Templates and Generic Programming

Chapter 8: Customizing new and delete

Chapter 9: Miscellany

I would hate to have to learn the lessons in this book by hard experience. It would be costly in time and unfortunately might even cover more than one employment span.

Most decisions that are undertaken by developers should consider ROI (return on investment), which always is measured in terms of time. For developers considering professional education material like this, the measure should be in terms of how many mistakes could be avoided before the book pays for itself. In this case, the ROI is probably less than 2 defects.

If your shelfspace for C++ books has only a few slots, this book should be in your "must haves." The book's ISBN is 0-321-33487-6 and it retails for $45 US. Scott's web site is at [...] and the errata for this book is [...]
0Comment31 of 32 people found this helpful. Was this review helpful to you?YesNoReport abuse
on June 5, 2008
This book is fantastic, I own three editions.

But the Kindle edition is a pale shadow of the print edition. Purchase the printed edition first, use the Kindle edition only as a portable reference. Expect your reading speed to be much slower on the Kindle edition than in the print edition.

The Kindle display is too narrow for the code, causing lines to wrap at inconvenient places. Code is mostly readable, but the line wraps render the code less readable than the print edition.

The Kindle edition uses the same serifed font for both code and prose, all in black. The printed edition uses a serif font for prose, and uses a sans-serif font to differentiate code. The print edition uses color to identifies important code.

Comparing the two editions gives you deeper appreciation for the art of typesetting.

Photos comparing Kindle and printed formatting at

The Scott Meyers books were *the* reason I bought a Kindle: these books were in my backpack on the day I ordered my Kindle. "I could carry a 10oz Kindle instead of a stack of books? Sold!" Even with the Kindle's limited formatting capabilities, I'm glad to finally have them in a Kindle edition.
review image
0Comment7 of 7 people found this helpful. Was this review helpful to you?YesNoReport abuse
on October 26, 2005
This book is well written. Meyers explains many C++ details that are either badly explained or not explained at all in other books. His focus is always on productive and practical techniques and he doesn't sit on the fence: he gives you the benefit of clearly well thought out advice. If you want to understand C++ better and if you want to understand the design trade offs, for example, between inheritance, aggregation, and templates, this is a good place to look for help. This is one of those rare books that you will want to read more than once---as well as to refer to regularly. Highly recommended.
0Comment6 of 6 people found this helpful. Was this review helpful to you?YesNoReport abuse
on August 12, 2012
This book is a game changer, for me personally. For example, coming off of some recent Java development, manual memory management seems like a correctness/maintenance nightmare, especially when dynamic allocation must be used outside of a constructor, and various errors and exceptions can lead to partially initialized states. Effective C++ introduces "smart pointers" and RAII concepts, which effectively (and non-obstrusively!) resolve these issues.

Of course, this book contains much more than just smart pointers and RAII. It is dense with "oh snap!" and "twist!" moments, when some lesser-known or edge case C++ behavior is revealed. It also introduces you to various other relatively new features of C++ that are already available to you through Boost. The majority of the book is directly applicable to everyday C++ development, with a few sections devoted to topics which you can skip/skim if you do not immediately need them.

Sections you can safely skip:
1) Parts of Chapter 7: Templates and Generic Programming, especially the sections on traits and template metaprogramming.
2) Chapter 8: Customizing new and delete.

I hope you enjoy this book as much as I did, and use it to quickly become an expert, or at least advanced, C++ developer. My last warning to you is that the companion book, More Effective C++: 35 New Ways to Improve Your Programs and Designs, is 9 years older than this book, and as such is not nearly as relevant. Some of the content, for example that related to compiler implementations and performance of various C++ constructs, should probably be viewed with suspicion.
0Comment5 of 5 people found this helpful. Was this review helpful to you?YesNoReport abuse
on May 30, 2005
Recently, I decided to make my programming language of choice to be C++ (although I use VB, C#, C++ and occasionally java).
I bought Effective C++ Third Edition & Effective STL (both by Mr. Meyers). The author knows all that he is talking about and he has generously clarified things like a personal tutor. I wish that I had a chance to read these books some years ago. I think I have acquired something which can help me build good programs and my professional confidence.
0Comment8 of 9 people found this helpful. Was this review helpful to you?YesNoReport abuse
on December 7, 2011
You spend most of your time trying to understand his examples than to understand the concepts. Every concept could have been explained by more simple examples that are easy to understand. It takes too much time to understand the examples you get bored and skip that subject. For example, "traits can be used in templates to be able to use if statements on types at compile time." The way he explains this simple concept is through advance operator on some STL iterators, in order to explain his example he spends pages explaining how iterators behave until finally. he makes his point. Why is it necessary to talk about iterators so much? find another example where this is not necessary.
In summary, good concepts are mentioned but they are explained in a bad way where you spend more time trying to understand the examples and less time thinking about the concepts. When you are done reading you don't remember any concepts, because you used all your brain power on examples.
0Comment15 of 19 people found this helpful. Was this review helpful to you?YesNoReport abuse
on November 26, 2011
I used this book as my primary source to transition from programming at College in C (where most programs are several thousand lines at most) to programming professionally in C++ (where you often have to manage anywhere from tens of thousands to millions of lines of code, most of which were not written by you). It does a fantastic job of giving you tips about the proper way to engineer your software so that it's not just correct, but also maintainable and self-documenting. You'll also find reading other people's code much easier after going through this book, since the paradigms that Mr. Meyers describes aren't just for academic interest -- they're actually being used out there in the wild.

Each of the 55 "Tips" are quite short and fairly self-contained, and the Author's friendly style makes this book an extremely easy read to boot. If you don't know why you'd bother to use a "const", why you'd use the more complicated C++ casts when the C-style casts work just fine, or why you would ever declare a constructor to be private, then it's time to pick up this book. Even if you do know all of these things, this book will almost certainly teach you something, or at least remind you of a few techniques. This should be everyone's second book on C/C++. Highly recommended.
0Comment4 of 4 people found this helpful. Was this review helpful to you?YesNoReport abuse
on June 16, 2006
One of the more practical books I've read on c++.

Easy to read and gets right to the point.

The book is divided into short chapters that covers some of the less-known subjects of c++, such as explicit constructors, virtual destructors, smart pointers, slicing issues, c++ castings & inlines, compilation dependancies, private inheritance, virtual multiple inheritance, templates meta-programming, placement new overloading and STL' TR1.

I've been programming c++ for more than 5 years and still managed to learn new things from reading it, so I would recommand to anyone giving it a try.
0Comment4 of 4 people found this helpful. Was this review helpful to you?YesNoReport abuse

Send us feedback

How can we make Amazon Customer Reviews better for you?
Let us know here.