Tutorial Books On C++
* Accelerated C++
Andrew Koenig & Barbara E. Moo Addison-Wesley 2000 Softcover ISBN 020170353X
Most books on C++ recapitulate the evolution of the language. First they start with C for the first chapter or few chapters, perhaps with cin and cout replacing scanf() and printf().
Accelerated C++ breakes this mold completely. This book rapidly introduces the reader to the C++ language as it exists today, defined by its very own ANSI/ISO International Standard. The text and code samples begin by introducing the std::string type and work their way through vectors, algorithms, iterators and all the modern methods including those in what used to be known as the Standard Template Library, now just one part of the C++ language and library. It is not until Chapter 10, "Managing memory and low-level data structures" that pointers, arrays, and C style strings are mentioned, the latter because they are still used for processing command line agruments and opening files.
This book also debunks one of the cliches used by some in the C++ programming community: "Learn C++ and you will know C as well." Not if you learn C++ properly! The reader who works with this book and builds the sample programs will come away with an excellent grasp of C++. He/she will not learn every element of the many containers and classes provided, but will understand the concepts behind them all and be well prepared to explore and learn the others. But that same reader will not learn enough to write "Hello World" in C.
There are only two drawbacks to this book that I can see.
The first is that it is not suitable for absolute beginners with no programming experience at all, at least just for reading. The authors state that this book was developed for teaching classes in the language, and with interactive help from a teacher or assistant to answer questions it might well be possible to use it in a beginner's class. But there is just too much material presented too quickly for an inexperienced reader to handle, in my opinion.
On the other hand anyone with some experience in programming in C or another language should have an easier time grasping the concepts and should do well with this book.
And for someone like me, whose main C++ experience dates back to much earlier days of the language, when C++ was little more than "C with classes", this book is ideal for getting up to speed with the real C++ language.
The other drawback I alluded to is that there is no companion disk or CD containing the code samples from the book. This may well be intentional, under the assumption that the reader has to pay more attention to the code when typing it in by hand, but is certainly unusual these days.
Still anyone wanting to learn the true potential of C++, whether an almost-beginner or even experienced C++ users, must get this book.
* Teach Yourself C++, Fifth Edition
Al Stevens
MIS:Press 1997
Softcover ISBN 1558285520
Al Stevens has been, among other things, the C and C++ columnist for the magazine Dr. Dobb's Journal. Like other books in this category, this one has gone through multiple revisions as the language evolved. The first four editions this book were aimed at C programmers who wanted to make the transition to C++. The fifth edition is written to be a complete tutorial for someone learning C++ with no C or any other programming experience.
All source code in the book is also on the included CD, as is an added bonus for Windows 95 users. The CD includes a complete simple implementation of gnu-win32 C and C++ compilers with a limited IDE. The version of gnu-win32 he used does not completely support all features of the 1998 C++ International Standard, but neither does any other compiler available at this time. Stevens clearly specifies in the book which parts of standard C++ his compiler doesn't handle.
Stevens specifically mentions that his compiler, named Quincy97, runs under Windows 95 (and indeed it does, I have installed and used it) but doesn't mention Windows NT. That leads me to believe that it might not run under NT. Since the book and compiler were released long before Windows 98 I have no idea whether it will run under this version.
If running the compiler under Windows 98 or Windows NT is important to you, I suggest you check with MIS:Press before purchasing the book.
* Teach Yourself C++ In 21 Days, Second Edition
Jesse Liberty
Sams Publishing 1997
Softcover ISBN 0672310708
I bought this book because I wanted the compiler package which Sams had bundled on a CD with it. However I am incapable of having a book on C or C++ in my possession without skimming through it, and reading the interesting parts in detail. Liberty's approach is thorough and he carefully lays the groundwork for each step. He makes every effort to keep to the C++ language standard, and does a good job of succeeding. All of the source code for the book is available online from the publisher, and from the web site of Liberty Associates, the author's company.
Liberty supports the purchasers of his books after the sale. He provides errata and FAQ lists for each of his books. He even provides documentation on the use of compilers which publishers sometimes bundle with his books, without his knowledge or approval, sometimes without adequate documentation or installation utilities.
This kind of support of readers and users of the book after the purchase is welcome and refreshing.
Advanced Book On C++
* The C++ Programming Language, Third Edition
Bjarne Stroustrup
Addison-Wesley 1997
Softcover ISBN 0201889544
Dr. Stroustrup is the creator of the C++ programming language, and has been continuously active in its development and standardization. This third edition of his book describing C++ is fully up to date with the new International Standard. It thoroughly covers the features and use of C++.
I list the book as advanced, rather than tutorial, because in my opinion it is not truly suitable for a beginner to use in trying to learn the language on their own. While the text and examples do proceed step-by-step from the simple to the complex, it is extremely dense with concepts and information. Rather than the breezy style of what I consider to be the better tutorials this book reads like a college text.
This would be an excellent book for one familiar with C, or earlier versions of C++, looking to get up to speed on all the features of the new standard C++, and it makes an excellent reference book. No serious C++ programmer should be without it, but I do not recommend it to beginners learning their first programming language.