This is my first review of any book after buying many books from Amazon over the years. Generally I find reviews helpful when considering purchases, but I always take them with a grain of salt and supplement it with my own research before making a buying decision. I'm writing this review because I had such a negative experience with this book.
A little background on myself. I'm a self-taught programmer mostly working commercially in Visual Basic for the past 7 years. I've also done a lot of studying in C and C++, and recently decided to get a B.S. degree to further my career. My first course was programming fundamentals, and the textbook couldn't have been worse. I already knew much of the information covered in the first half of this tome, but I can honestly say it was poorly presented _to the beginning programming_ student. I'm not saying Malik doesn't know what he's talking about, I'm saying he tried to present C++ fundamentals to the absolute beginner and did a poor job of it. The first half of this book should have been cut, and the second half made its own book and be used in an intermediate course.
He repeats himself ad nauseum. Some might argue this is an effective teaching tool, however he goes to great lengths to repeat himself on even the most easy to understand concepts. The end result is you feel like you're swimming upstream making no progress, and I don't say this because I already know the basics. He takes pages and pages to explain even the most simple concepts to the point where you get frustrated and start to speed read or skip portions just to slog through the chapter. There is a word for this style of writing, it is called prolix.
The example programs were also poorly thought out. True, they make use of topics covered in the chapter (as any example ought to), but the "problems" (from a very high level view, all computer programs can be classified as solving one or more problems) they attempt to solve are the most mundane, boring examples imaginable. I can't see how any beginning CS student would want to keep programming after seeing the types of programs written in these examples. They could come away with the idea that all programs are like this. First of all, they are far removed from any real-world program. This is partly a consequence of GUI and platform dependent programming being an intermediate to advanced topic (at least in C++). Because of that, the examples should have been the bare minimum necessary to show how the chapter's topics are used. Instead, they go on and on at great length with a huge problem which incidently makes use of the chapter's topics instead of coming up with a program that actually does anything useful. And if a program is useful, it just might be interesting. If it's interesting, the student just might learn more! Keeping the student interested in the topic is by far a better approach to teaching than just repeating yourself and using boring examples. In all fairness, many programming books also take this (bad) approach, but Malik's book overdoes it.
Unfortunately, my school required this textbook for the C++ classes so I did not have any choice but to buy this book. If, however, you have the freedom to choose your own C++ text, I encourage you to look elsewhere. Unfortunately I don't have any other texts that I've read and could recommend.