Let me start by quoting a paragraph from the back cover of this book
... is organised into three sections. The first section provides a basic understanding of programming constructs variables, operators, conditional statements, loops and functions. These constructs are used to develop programs that solve relatively simple problems. The focus here is on mastery of the basic C++ syntax. The second section concentrates on additional features of C++ such as array, structures, classes, pointers, and files. The third section discusses the benefits and implementations of some simple C++ structures to help the reader appreciate the issues of performance when dealing with real-world problems.
Do alarm bells start ringing? I think they should when you consider that the author is aiming this book at 'any beginning programmer who plans to use a computer for information acquisition and processing.' The back cover seems to be promising a low level, C like approach to programming. Let me examine some of what I find between the covers.
It is very hard to know how to continue this review. I started with one of my normal tests by having a look in the index for STL, it was not there but I noticed a function called 'StrLen' a few minutes later I had found the following (page 255)
In olden days (before MTV) by including string.h we had access to many functions that operate on strings, such as strlen, strcpy, and strcat. Notice that their function names are implemented in all lower case letters. This is how C++ defines (as we all know, that should be declares - FG) them; however, to stick to our standard, we will implement them by capitalizing the first letter of each word. We will now show you how they are implemented.
Here we are, almost half way through a book on C++ and the author thinks we must first learn how to write implementations of miss-named library functions to handle raw C-style null-terminated arrays of char.
It gets worse. On pages 268/9 he invites his reader to implement StrNCpy, StrNCat and StrNCmp. On page 373 we find
We leave as an exercise the implementation of StrNCmp, StrNCpy and StrnCat (stet) with pointers instead of arrays.
On Page 393 we find implementing those same three functions (with consistent spelling this time) as the first three questions in the end of chapter exercises.
I could go on, but I will not prolong your agony any further. This is not a book about writing any form of C++ as we know it (indeed, I have yet to find a place where the reader actually has to write a program, the furthest he goes is asking the reader to implement a single function. Maybe I have missed some exception to this). It is a book about writing idiosyncratic C in the disguise of procedural C++ from an author who seems to have a very limited imagination when it comes to providing examples and exercises.
The back cover says "...Jeff is an active coach of world-class race walkers who hope to qualify for the Olympic Games, and is a one-time international race walk competitor." The problem is that programming is immensely more demanding of the intellect than is race walking (to be fair, it is much less physically demanding) and cannot be learnt through the kind of boring repetitive, go nowhere material that constitutes this book.
What I want to know is what persuaded such an excellent publisher to publish a book that is only fit for giving people with no talent for programming and illusion that they can do so.
If you want to scare yourself go and read the reviews of this book onhttp://www.amazon.com/, in particular one from one of the author's students. And how anyone could buy this book and Modern C++ Design is beyond my comprehension.