185
people found this helpful, as of 2023
ranked #183,007 most helpful
out of 571,544,897 reviews
★★☆☆☆
Don't get this book, get the 5th edition.
/********** Conclusion **********/
Due to the two major cons below, I will not recommend this book, but instead recommend two others:
1) SAMS Teach Yourself C++ in 21 Days (5th Edition). If you want to learn C++ from scratch and have any trouble at all following other books, that book will be a godsend for you.
2) Once you finish that book, pick up The C++ Standard Library to learn about the STL and newer C++11 features in greater depth.
/********** PROS **********/
1) The same wonderful layout that SAMS books are known for. It makes quick referencing and look-up of key points easy.
2) Covers more of the STL than older editions.
/********** CONS **********/
1). The author in this book is not nearly as user-friendly in their explanations as authors of the 5th edition. While writing a tutorial on functions for my students, I looked to this book as a reference. The very first sentence on functions in this book is the following:
"Functions in C++ are the same as functions in C. Functions are artifacts that enable you to divide the content of your application into functional units that can be invoked in a sequence of your choosing."
The first problem with this introduction line is that this book is for beginners who probably don't know C, so that's a dumb assumption to make. The second problem with it is that telling a beginner that functions are artifacts does nothing to enhance their understanding of them - it is a waste of text that bogs down the reader's brain with unnecessary blather. Both of these points are part of the main problem which is that this is an absolutely HORRIBLE explanation in general for the novice this book is targeted at. No student of mine will learn from language like this.
By contrast, the 5th edition introduces functions like this:
"A function is, in effect, a subprogram that can act on data and return a value. Every C++ program has at least one function, main(). When your program starts, the main() function is called automatically...
... Each function has its own name, and when that name is encountered, the execution of the program branches to the body of that function."
This is clearly a much better way to convey this information to a learning student. Telling them that writing the function name causes the code inside the function to happen is a lot easier to grasp than saying that functions are artifacts and are just like C ones.
It's not just the section on functions that is written this way either. The whole book goes on like this, which may account for why this newer edition has about half the page count of the older one. I always recommended the 5th edition as the one book nobody could possibly get lost in while learning, but the 7th edition is a real disappointment in continuing that trend.
2) The book advertises C++11 on the cover. While it does cover some C++11 features, it leaves out many that really belong in this book (e.g. default and delete keywords for constructors). This may be due in part to writing code that will compile on the edition of Visual Studio the author is using, whose compiler is not fully standards-compliant with C++11 yet (at the time of this writing). However, these features ARE supported on other compilers. Even if you don't want to confuse the reader with code that won't work on the suggested IDE/compiler, it at least deserves a passing mention since it's supposed to be STANDARD C++, not Microsoft's C++. Older editions of this book were sure mention things like this.
My suggestion to the publisher:
Dump Siddhartha Rao and bring back Jesse Liberty and the other guy.
UPDATE: Wow, I hadn't anticipated so much attention on this review, but I'm glad to see so many have found it helpful. A few notes to add since the original writing of this review:
* The latest Visual Studio compilers are compliant with most if not all C++11 (and 14/17) features that any C++ beginner should be introduced to.
* My recommendation still stands! I still have yet to find a better introductory C++ book than that SAMS 5th edition, and I still strongly recommend starting there and continuing with a secondary book that includes the newer C++ language additions after you've got a decent grasp on the basics. I believe the C++ Standard Library 2nd edition is still a good resource, but many other new ones have since sprung up as well, so go ahead and look around.
* The most common question I've been asked since making this recommendation here and in other locations is for a book recommendation to advance from beginner to intermediate level, so my updated (as of late 2016) answer to that is: Effective Modern C++.
March 2013 · Books · verified purchase