|
|
27 of 31 people found the following review helpful:
3.0 out of 5 stars
Questions, questions? Answers, answers., February 5, 2003
I always like to start any review of a technical book with the table of contents, and see no reason to break with that practice here:I Preliminaries Introduction - Basic C++ Syntax and Semantics - Understanding the Management Perspective- The Architectural Perspective II Object-Oriented Design Object-Oriented Fundamentals - Specification of Observable Behavior - Proper Inheritance - Detecting and Correcting Improper Inheritance - Error Handling Strategies - Testing Strategies III Language Facilities References ('&' type) - New and Delete - Inline Functions - Const Correctness - Namespaces - Using Static - Derived Classes - Access Control - Friend Classes and Friend Functions - Constructors and Destructors -Virtual Functions - Initialization Lists - Operator Overloading - Assignment Operators - Templates - Exception Tactics - Types and RTTI - Containers IV Topics Mixing and Overloading with Inheritance - The Big Three (destructors, copy constructors, assignment operators) - Using Objects to Prevent Memory Leaks - Wild Pointers and Other Devilish Errors - High-Performance Software - COM and Active X - Transitioning to CORBA - C Language Considerations - Private and Protected Inheritance - Pointers to Member Functions - The Transition to OO and C++ - I don't think there are any great C++ books. A great book would eliminate the need for others, which none that I've seen do. Even if not great, this is a good book, and worth reviewing. The book attempts to be two things: first, a programming style guide, and second, a nuts-and-bolts C++ reference book. (Incidentally, the cover is somewhat misleading: it also trumpets coverage of ActiveX, CORBA, and COM, but the material on them here is very thin - if you need to understand them, look elsewhere). As a programming style guide, it is rather a mixed bag. Its main weakness is a tendency towards salesmanship - that is, the authors are trying to sell you something and are therefore quite aggressive in discussing the merits of their wares and tend to be silent when discussing the weaknesses of them. A particular problem I could point out is the use of C++ in DLLs. If you follow the style guide in this book, and try to put your code into DLL's, you will find that you have some very serious versioning problems, problems the advice in this book was instrumental in creating but useless in alleviating. This doesn't mean that the advice isn't generally good, but there are issues here that the authors are not as frank as they should be in discussing. (I don't know why propaganda of this sort is so common in C++ books, but it is. I've never seen one without it.) Whatever it may be as a style guide, as a nuts and bolts problem solving book this is really very good. C++ is a large language - it is by far the largest, most complex language ever to find wide use, and there it contains many pitfalls. This book's great strength is in identifying many of these problem areas, and providing solutions to them. The discussion of object construction, copying, and destruction, alone, for example would make this book worth owning. The coverage is not, however, complete. Reader knowledge of language basics is assumed, and some advanced topics, such as multiple inheritance, are not covered. Because of this, you will not find this a good book for learning C++, nor should it be the only C++ book you own. That said, of all the C++ books I own, this is the one that most often contained the easiest to find, clearest, and best answer to the problems that I actually had when using (as opposed to learning) the language. The answers were generally easiest to find because of the extensive table of contents (it averages about one entry per page) and very complete index. In addition to being easy to find, the answers were also clearly written. There is a lot of sample code in this book, and it is generally very good code for teaching its points. The authors also clearly understand their stuff, and I did not find any of the dreadful this-is-too-technical-for-the-reader hand-waving that so often mars computer industry books. Finally, in addition to being clearly written, the answers were also usually the most complete and thorough I found among the C++ books I own - the problems the book addressed, it addressed very well. In summary, until and unless that great C++ book is ever written - and I'm not holding my breath - this is a book that almost any C++ developer would do well to have, limits and all.
|