Going From C to C++ is a book designed to do just what its title implies. Each reader is encouraged to bring all of his or her knowledge of ANSI C along this journey. Transitioning to C++ is not so hard as some think (or want you to think). C++ is a logical evolution that uses all of your C language knowledge and allows you, almost immediately, to put it to more powerful uses (From the Preface).
The book is divided into seven chapters. The first is a short introduction to the motivation for and contents of the remaining parts. Chapters 2 to 7 are about “C++ I/O Streams,” “Procedural-based C++,” Object-oriented C++,” “C++ Classes: The True Objects in Object-oriented Programming,” “Inheritance,” and “Addressing Real-world Tasks in an Object-oriented Manner.”
Throughout the book, the author strongly emphasizes the logical concepts, without demanding that the reader perform deep analyses of sophisticated C++ constructs or algorithms, so the reader is not distracted from the essentials. I myself, having some practice in ANSI C, but only some theoretical knowledge about C++, always felt that Traister presented the most urgent and useful information for C++ beginners at the right time. Also important is the author’s stressing that C++ is the most complete and consistent C dialect currently available, and that C++ does not automatically mean object-oriented programming.
The few minor misprints in the book are not really confusing or even disturbing, due to the simplicity of the text and the examples. I was much more annoyed by the author’s habit of saying new and important things twice for the sake of emphasizing them. If a reader wants or needs to go through parts of the text twice, he or she has the freedom to do so even if the text is printed only once. In Traister’s book, however, readers are forced to read much information twice or to look for a suitable entry point after the repetition. This repetition is my main objection to the book. Otherwise, I am pleased by the motivation, the logical structure, and their influence on the contents of the book.
The layout and structure of source code are partly a matter of personal taste. The style of the example sources often is not in what I consider a structured and elegant C form (with indentations, empty lines, and so forth). But, again, this does not really disturb the reader.
Finally, I can recommend this book to everyone who wants to get an overview of going from C to C++ easily, such as on vacation, or (as I did) on summer evenings and weekends. He or she will find a good book for C++ beginners.