I've been using two books together and they're the best combination of programming books I've ever read - "Accelerated C++" by Koenig & Moo and "Thinking in C++" by Bruce Eckel. Already mentioned before of course, but it's worth pointing out that the two compliment each other perfectly. I couldn't not do without either one.
Accelerated C++ gets your sleeves rolled up with practical examples using the STL almost immediately and saves the more technical/theoretical stuff for later, while Thinking in C++ takes a more bottom up theoretical approach and has you thinking about the intricacies of C++ by using skeletal dummy classes to illustrate how things work. Each book provides what the other is lacking - and if you read them pretty much simultaneously like I did, they'll meet at around chapters 12-14 of each book when they start talking about inheritance.
Not for complete beginners and it helps to know something of another language first (especially C) but if you've already learned a little C and don't want to be babied with 5 page explanations of for loops again, then these books are absolutely perfect. I've really enjoyed reading them both and the exercises they set certainly help you understand what you've learned.
I found that Accelerated C++ is all you need as a beginners book. Couple it with others books, and I'm sure it will be a great learning experience.
Any recommendations on good Design Pattern books? Have been using them at work a lot, but I am trying to learn to write/implement them on my own.
Has anyone mentioned Bjarne Stroustrup's P3 book yet?
After purchasing many, many books focusing on learning C++, I still rate this as the best. Hell, I happen to think that this is the best introductory programming book I've ever read in any language. The reviews at Amazon do it more justice than I can here.
That's the first I've heard of that book. It looks very intriguing. There seem to be a lack of top quality C++ books available for programming beginners, and I generally like Stroustrup's approach to teaching C++, so perhaps this could be a new go to recommendation for people who want to learn to program with C++. Thanks for pointing it out.
Beginner books: I've been using Gaddis, Starting out with C++ and Strata, C++ Primer Plus and thought it might be helpful to others to say something about the differences. Both are good books in their own ways.
Gaddis is better for those who find programming difficult and want more time spent on introductory concepts and more exercises to review the concepts.
Strata is better for those who find the introductory stuff pretty easy. He provides enough exercises to review the material but seems to write for a reader who is going to have less trouble grasping and remembering the ideas.
I recently switched to Strata after working up through the classes section in Gaddis because I noticed that Strata discusses classes in greater detail. If you feel like you may need to take a little more time to digest the basics, you should choose Gaddis. If you want to get to the more advanced parts a bit more quickly, go with Strata.
"Strata"? Stephen Prata maybe?
The only good is knowledge and the only evil is ignorance.
yes, sorry, i don't know how i got Strata into my head... mea culpa! Prata is the correct name.
For people who understand German, I recommend the brand new book "Der C++ Programmierer" by Ulrich Breymann.
C++ Lehr-/Lernbuch: Der C++ Programmierer
I flipped through it at the local bookstore and I was really impressed. It approaches C++ exactly the right way: using high-level library features from the beginning, discussing some Boost libraries, explaining important concepts like value vs. reference semantics, RAII, exception safety, etc. It touches on C++0x features and demonstrates C++0x library enhancements (in particular regexes and threads). It also gives a very brief introduction to Qt as the author's favorite GUI library.
I don't know if it will be ever translated to English.
All the buzzt!
"There is not now, nor has there ever been, nor will there ever be, any programming language in which it is the least bit difficult to write bad code."
- Flon's Law
What knowledge level does it presuppose? A lot of the concepts you mention are new to me, although the German isn't a problem. Just wondering if it might be a bit too fortgeschritten for now... ?