As the cover says, this book is a revised edition of the book previously titled Secrets of the C++ Masters . The original title was doubly misleading because it seems to be a series title belonging to another publisher and because it does not adequately describe the contents. The new title is a bit better but it still gives, in my opinion, the wrong impression.
However, leaving that aside as it is largely a matter of marketing, I have to confess that the revised edition greatly disappoints me. The original book was very good and was about the only available text on such things as smart pointers. There were numerous niggles. For example:
There are nouns, verbs, and lots of slang, such as
cout<<17<Where the writer carelessly uses an entirely superfluous
flushmanipulator (because the last thingendldoes is to flush theostreamobject.) Then there were the rather more annoying items such as the description of templates as being essentially macros. There are very good reasons why they should not be viewed that way though this is not the place to go into that.The author's English sometimes lacked the soundness that I would hope for in a book (I will tolerate more in a periodical because deadlines often get in the way).
Despite all the above, it was a book that I strongly recommended then and I was not alone in doing so.
That was three years ago. What has the revision accomplished? In simple terms, nothing. The author has altered some of his English text in minor ways. Some of the alterations improve the English and some make it worse. Perhaps the copy editor should be taken to task because that is really his/her job.
He has added a poor appendix
Java Vs C++. The English is sometimes so bad that I can only assume that it is the result of transliterating direct from an email. I would have hoped for a much more thoughtful comparison, but that is the least of my worries.The author has redated his acknowledgements to 1998 and the copyright is changed to 1998. It is hard to believe that the tiny number of cosmetic changes justifies either of those date changes. The book is essentially the book the author had published in 1995.
The thing that causes me the greatest disappointment is that, as far as I can see even after a pretty close comparison, the author has not amended any of his source code. There have been considerable advances in template technology during the last three years. In addition, I would expect an expert to radically review a chapter on exception handling. That chapter contains little of use to the current C++ programmer, and provides only the most cursory coverage of exception specifications.
Then we have the issue of declaring constructors as
explicit. Well it is a non-issue because he says nothing about it even though many of his constructors should have such protection.The result is that both the author and the publishers have missed the opportunity to take what was a very good book and bring it up to date. Doing that with a few extra refinements could have resulted in an excellent book. The thing that disappoints is that, given the author's obvious expertise, he could have done so much better. He hasn't, and I expect that sometime in the next couple of years someone else will write the book he might have.
Very good value for the competent C++ programmer (note that, it is not for inexperienced C++ users however experienced they are in other languages) but it could have been so much more.