C + + has really taken a new direction since the standard was finalized, and a book that has ignored the progress made by the ISO committee is not really worth buying for someone who is new to C + +.


hello all,

i find C++ from problem analysis to program design by D.S. Malik very easy to understand



C++ by Herbert Schildt is the best book to refer.
Constructors, destructors, Templates all topics are explained properly in the book


"Teach yourself C & C++ in 21 Days" by Sams Publication is a great option to learn the concepts of C & C++.

4 Years Ago
Flag Bad Post


2 books I've kept over my desk for reference for the last 8


I'm sticking with the comment I made earlier: A bunch of people mentioning names of books they personally like, without any real information about why they like them, or about their qualifications to evaluate them, is not useful.

This is especially true because I think that at least a few of the books thus recommended are trash. As the (co)author of a competing book, I think it would be unethical for me to point out which ones or explain why I think so; but I urge you not to take unsupported claims of "I like book X" at face value without evaluating them yourself.


Hi, I'm learning with Bjarne Stroustrup his book 'Programming principles and practice using C++' Click Here

What I like about it is that he tries to learn you how to write good code 'using' C++. so instead of only learning you C++ he tries to learn you how to program clear and structure code while using C++.

Every programmer should know several languages so why not focus on learn how to program instead of focus how to learn C++ ?

Negative points is that it's just a lot of text. It's not always about the code. It's getting you into becoming a professional programmer. Deep inside I think I need all that text, but sometimes it's just a lot of reading :-)
Some moments he also jumps back and forth. That's confusing, he introduces something and says next to it : We will explain this furhter in 5 chapters... I don't really like that system. On the other hand, I guess he knows what he's doing since he's a teacher for years and years and he tested his book on more than 1000 students before going to press with it.

But again, I like the book a lot.

You guys make me wonder now if I should also dig into Accelerated C++ or not ? I don't know if the Accelerated C++ by Andrew Koenig and Barbara E.Moo is also for 'beginning' programmers, or is it more for programmers who want to learn C++ fast ?

Edited by sternone: added link


This is obviously a biased comment; but I'll make it anyway.

Accelerated C++ does not require any specific previous programming knowledge, but the text is fairly condensed, and if you try to use it to teach yourself to program with no prior experience at all, you might find it rough going if you have no one you can ask for help if you get stuck. Because it covers more in 350 pages than some other books do in 1,000 pages, you should expect to have to read carefully; but I think that if you do read carefully, you will learn more in less time than you would with many other books.


Thanks for your reaction, does it makes sense to read it AFTER Bjarne Stroustrup's book Programming principles and practice using C++ ??


It's hard to say -- I think the two books have rather different purposes, and the answer would probably depend on your personal style, which obviously I don't know.


I would suggest to read C++ Programming From Problem Analysis to Program Design by D.S Malik


Mel, it seems like the book isn't free; it costs around $20 with a sample chapter one available for preview.


Also: From the table of contents, this book does not mention vectors until page 200 out of 379 pages. This fact suggests that the book is much more C-oriented than C++-oriented.


Just download the pdf and you have an excellent and FREE book. Plus there's an EPIC c++ reference on the site.


You might be interested to know that the 5th edition of C++ Primer is now available. This book is a complete rewrite of the 4th edition, and integrates C++11 features throughout the text and examples. To my knowledge, it is the first book on the market to do this.

I'm obviously biased about this book, both because I reviewed and commented on several drafts and because I'm married to one of the authors. Nevertheless, my comments in the previous paragraph are all facts, not opinions, and I'd like to suggest that if such a book interests you, you might be interested in checking it out for yourself.


Here is my two cents from taking a bit of time to skim through most of the major books on C++.

For Beginners

The best I can do to help you is convey hearsay about recent readers having said "I learn C++ using book X, and it was really good.", and skim through tables of contents or the books themselves and assess whether it seems well written and has the right stuff in it. In that perspective, the C++ Primer (4th or 5th edition) are highly recommended. What you want to look for is who the authors are. You need authors that are knowledgeable, experienced, and have written a lot of such educational material before. In that respect, C++ Primer has a stellar track-record. And, of course, the catchier the title, the worse the book is, usually. And, from those criteria, the list gets pretty short (I won't even mention those ridiculous "C++ for Dummies" or "Learn C++ in 21 days" books):

  • "C++ Primer, 5th Edition": Well written, well structured, has lots of examples and exercises, good authors, and no hidden agenda (or programming philosophy to convey), just straight-forward "learn to do stuff" approach.
  • "Accelerated C++": Original in its approach, very to the point, stellar reviews, recommended authors, and very complete. The drawback is that it is getting a bit old now.

Books that are tempting, but not good enough in my opinion:

  • "Starting Out with C++:..": This seems like a reasonably good book, at least, as a pedantic university course textbook on C++. However, it has way too much focus on C-style mechanisms that are good to know, but not very useful in C++. In other words, it is not a practical learning approach at all. The table of contents exactly reflect what I would expect an old professor (who is more of a native C programmer, with some acquaintance with C++) to use for his C++ course-work.
  • "Thinking in C++": This series is not really aimed at beginners because it doesn't use a practical approach at all, it is mostly about certain philosophy or lessons learned about to way to approach problems in C++. Might be a good second book, to lean you into the world of software engineering.
  • "Practical C++ Programming": I think the intended title for this book is "Practical C Programming", they must have made a typo in the title. IMO, don't get near this book.
  • "C++ Primer Plus": This isn't a book for absolute beginners, but if you have some acquaintance with basic programming logic (e.g., you "understand" programming and have dabbled with a few simple languages like C or Matlab), then it could be a good fit for you.
  • "Programming And Problem Solving With C++": This is very similar to "Starting Out with C++:..", it is a pedantic course-work textbook, written by university professors to teach programming fundamentals via C++. Not practical, no good for beginners, and it is also a C programming book in disguise.

When over-the-hill, but heading for the mountain

For mountain practical

For daily practical programming, you need reference material and programming guidelines. For reference material, there are really only a few solid resources:

  • www.cplusplus.com/reference for browsing all the standard library classes and functions. The alternative "wiki" site is also good: www.cppreference.com.
  • "C++ Standard Library" for a hard-copy equivalent to the above site. Also contains examples and explanations. Definitely a good on-the-desk reference book.
  • "The C++ Standard": Nothing beats the source material, the ISO standard document itself. This will be more useful if you are almost at the top of the mountain, this is my number 1 reference after basic lookups on cplusplus.com.

For programming guidelines, there are lots of books, but they are rarely impartial (have hidden agenda or perspective, or a general feel of "here's why others don't do things wrong, and why I (the author) do it better" and full of absolute rules without nuance). For the more objective sources, I can really only recommend two sources:

  • Marshall Cline's C++ FAQs: I think that all advanced level C++ programmers have eventually read all those FAQ entries at one point or another. It is a really comprehensive collection of many common issues and nice technical and nuanced explanations on them.
  • "C++ Coding Standards:..": If you consider yourself a good C++ programmer and haven't read this book, go and get it! This is a must-read in the intermediate to advanced zone (on the "practical" front, of course).

For mountain technical

If you want to have a really good grasp of the technical sides, of all the language gotchas, and things like that. Then, the only real formal reference on these topics are the ISO documents themselves and the C++ committee papers on various proposals and issues with the language. But on the more fun-to-read side of things, go for Scott Meyer's "Effective ..." series of books, and Herb Sutter's Guru of the Week repository of gotchas (as well as his "Exceptional C++" series). Then, it's also good to watch out for articles on Dr.Dobbs.

For mountain template-magic

If you're starting to realize you are not a muggle, and have the magic of templates in you, then your first stop should be "Modern C++ Design:.." by Andrei Alexandrescu, this is to get you excited with all the magic tricks that can be done. Once you've digested that, it is worth reading "C++ Template Metaprogramming" by Dave Abrahams and Aleksey Gurtovoy, to really get a more practical approach to building heavily-templated programs (as well as a tutorial for the very useful Boost.MPL library). After that, you are pretty much on your own, although taking a peek under-the-hood of some of the more magical libraries can be very enlightning: for template metaprogramming checkout Boost libraries like MPL, Spirit, Phoenix, and Proto; and more on the side of "generic programming" magic, checkout Boost Graph and GIL, or the STL libraries.

Votes + Comments
Good list
Excellent :)

Good list though I feel the section "not good enough" is confusing IMO. You put "C++ Primer Plus" in there and then go out to say that it might be a good fit if the OP has some prior programming experience.

I can think of two books to add on to the above list:

  • Programming: Principles and Practice using C++ which I think is good enough for beginner/intermediate C++ programmers. One word of caution though; the author uses an external lib for demonstrating the examples in the book. It is assumed that the beginner has someone whom he/she can catch and get all the setup done. Setting up a new library/headers in Visual Studio is not a beginner if you know what I'm talking about :)
  • API Design for C++ Not exactly a book just about API design but also contains bits and pieces of generic C++ wisdom. Obviously an intermdediate/advanced level book. Teaches you why you should put in more thought before attempting to write an API, the implications of all the code you write etc.

A bit off topic, but thought it may be good to provide feedback here since I bought the book after reading this thread.

Bought the C++ Primer to familiarize myself with the new C++11. Overall seems like a good book, but there may be a few typos and errors that you missed during revision. Is there an email address so that I can point them out to the authors?

Example that I just found..Trivial but for what it's worth.

Exercise 2.25(page 59) Determine the types and values of each of the following variables.
(a) int* ip, &r = ip;

clearly r is a reference to an integer, so it can't refer to ip which is a pointer to an integer. Confirmed the error on the Visual C++ 2012 compiler Version 17.00.50522.1.


I've passed the message on to Barbara. She offers the following correction:

int *ip, i, &r = i;

Edited by arkoenig

Votes + Comments
Good use of marriage as a communication medium!

A new book for everyone to enjoy would be SAMS TEACH YOURSELF C++ in one our per day. The book is great and fun to read.


I would like to add a good book too.
-C++ Primer 5th Edition by Stanley Lippman and Jose Lajoie
It's a good book, I use it at the moment. It's the best book that I'm using of all books I've tried.
Only one con is that I hear, is that when you get further there won't be any source codes anymore. There is a book called "C++ Primer Answer Book" by Clovis L. Tondo, Bruce P. Leung that covers the awnsers of the excercises.



Are there good Self Study books? Accelerated C++ and C++ Primer 5th edition don't have answers! so it is kind of bad for a self study book. Thanks


Accelerated C++ and C++ Primer 5th edition don't have answers!

That's a good thing. Then you won't be tempted to just look at the answer and have to work through the chapter over and over until internalizing all of the information necessary to complete the exercises. You learn more by not having answers readily available. If I recall correctly, Accelerated C++ actually mentions choosing not to provide answers and explains why in chapter 0.

Edited by deceptikon


This is mostly C++ in general books. Isn't is easier to start with Petzold if one is going to program under Windows?

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.