Accelerated C++

I've never really bought the claim that you can't learn C++ without first learning C, and this book proves it. As our esteemed C++ guru ariels once said, "it teaches the language like there never was C." From the very beginning you know the authors have been around the language so long it has imprinted itself into their neural pathways, like all good programmers, right down to the numbering of the chapters from 0.

Now this is not just any old programming book (although chapter 0 begins with the obligatory Hello world) - rather than starting with the very basics of the language and moving on to the advanced stuff and STL later, it dives right into explaining every aspect of the "Hello world" source, including operators, operands, operator association, types, manipulators, streams, scope, namespaces and the standard library. While most books introducing C++ will explain the core language first before moving onto the standard library and its containers, iterators, algorithms and so on, this takes the language as a whole and starts from there. Some have complained that it doesn't lend itself to beginner programmers for this reason, but I found that as long as you're willing to actually concentrate (which sometimes involves re-reading a section), it builds more of a foundation for the advanced features of the language later on.

The good thing about this book is that it starts off assuming no knowledge of the C++ language and goes on to explain not only what you can do with it and the standard library, but also why it works that way. It teaches the reader good programming practices and habits, and when/how to figure out for yourself what to do (eg. pass by value vs. pass by reference), in effect teaching how to program in any language. It makes an excellent and concise introduction to C++ programming which can then be built upon with a book such as Teach Yourself C++ by Al Stevens, a very in-depth book exploring pretty much all the fundamental language features in a more systematic manner (which also makes it a handy reference), or probably Bjarne Stroustrup's classic The C++ Programming Language, but I don't actually have that book (hangs head).

To get an idea of what Accelerated C++ covers, I stole this chapter list from the website at http://www.acceleratedcpp.com