Automotive Holiday Deals Up to 50% Off Select Books Shop Men's Athletic Shoes Learn more nav_sap_SWP_6M_fly_beacon Indie for the Holidays egg_2015 All-New Amazon Fire TV Grooming Deals Gifts Under $50 Shop now Amazon Gift Card Offer bf15 bf15 bf15 $30 Off Amazon Echo $15 Off All-New Fire Kindle Black Friday Deals Black Friday Video Game Deals Shop Now HTL

Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.

  • Apple
  • Android
  • Windows Phone
  • Android

To get the free app, enter your email address or mobile phone number.

Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions

40 customer reviews
ISBN-13: 978-0201615623
ISBN-10: 0201615622
Why is ISBN important?
This bar-code number lets you verify that you're getting exactly the right version or edition of a book. The 13-digit and 10-digit formats both work.
Scan an ISBN with your phone
Use the Amazon App to scan ISBNs and compare prices.
Sell yours for a Gift Card
We'll buy it for $12.42
Learn More
Trade in now
Have one to sell? Sell on Amazon
Buy used On clicking this link, a new layer will be open
$25.22 On clicking this link, a new layer will be open
Buy new On clicking this link, a new layer will be open
$41.26 On clicking this link, a new layer will be open
More Buying Choices
28 New from $29.44 25 Used from $21.20
Free Two-Day Shipping for College Students with Amazon Student Free%20Two-Day%20Shipping%20for%20College%20Students%20with%20Amazon%20Student

Get Up to 80% Back Rent Textbooks
$41.26 FREE Shipping. Only 14 left in stock (more on the way). Ships from and sold by Gift-wrap available.

Frequently Bought Together

  • Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
  • +
  • More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions
  • +
  • Exceptional C++ Style: 40 New Engineering Puzzles, Programming Problems, and Solutions
Total price: $108.26
Buy the selected items together

Special Offers and Product Promotions

  • Take an Extra 30% Off Any Book: Use promo code HOLIDAY30 at checkout to get an extra 30% off any book for a limited time. Excludes Kindle eBooks and Audible Audiobooks. Restrictions apply. Learn more | Shop now

Editorial Reviews Review

Aimed at the experienced C++ programmer, Herb Sutter's Exceptional C++ tests the reader's knowledge of advanced C++ language features and idioms with several dozen programming puzzles and explanations. This book can definitely help raise your C++ class design skills to the next level.

Based on the author's Guru of the Week Web column, this book poses a series of challenging questions on the inner workings of C++, centering around generic programming with the Standard Template Library (STL), exception handling, memory management, and class design. Even if you think you know C++ well, most of these problems will teach you something more about the language and how to write more robust classes that are "exception safe" (meaning they don't throw any handled exceptions or leak resources). Don't think this is just "language lawyering," though. The author's explanations stress sound programming principles (favoring simplicity) and idioms (such as the Pimpl idiom for class design that promotes faster compile times and better maintainability, or using "smart" auto_ptrs with STL.) Judging from the range and depth of these examples, Sutter's command of the inner workings of C++ is impressive, and he does an excellent job of conveying this expertise without jargon or a lot of theory.

After reading this book, C++ designers will learn several "best practices" of how to write robust, efficient classes that are "exception safe." Chances are you'll gain a better understanding of memory management techniques and working with STL too. For the experienced developer seeking leading-edge knowledge of some of the best ways to use C++, Exceptional C++ is both a challenging and truly worthwhile source of information. --Richard Dragan

Topics covered: Advanced C++ programming tutorial, generic programming, tips for string classes, containers and STL, temporary objects, exception-safe code tutorial, virtual functions, class inheritance, the Pimpl idiom, namespaces, memory management, C++ memory areas, overloading new and delete, using smart pointer with auto_ptr, using const, casts, and hints for better performance and code maintainability.

From the Inside Flap

Exceptional C++ shows by example how to go about solid software engineering. Along with a lot of other material, this book includes expanded versions of the first 30 issues of the popular Internet C++ feature Guru of the Week (or, in its short form, GotW), a series of self-contained C++ engineering problems and solutions that illustrate specific design and coding techniques.

This book isn't a random grab-bag of code puzzles; it's primarily a guide to sound real-world enterprise software design in C++. It uses a problem/solution format because that's the most effective way I know to involve you, gentle reader, in the ideas behind the problems and the reasons behind the guidelines. Although the Items cover a variety of topics, you'll notice recurring themes that focus on enterprise development issues, particularly exception safety, sound class and module design, appropriate optimization, and writing portable standards-conforming code.

I hope you find this material useful in your daily work. But I also hope you find at least a few nifty thoughts and elegant techniques, and that from time to time, as you're reading through these pages, you'll suddenly have an "Aha! Gnarly!" moment. After all, who says software engineering has to be dull? How to Read This Book

I expect that you already know the basics of C++. If you don't, start with a good C++ introduction and overview (good choices are a classic tome like Bjarne Stroustrup's The C++ Programming Language, Third Edition 1 or Stan Lippman and JosEe Lajoie's C++ Primer, Third Edition 2 ), and then be sure to pick up a style guide like Scott Meyers' classic Effective C++ books (I find the browser-based CD version convenient and useful).3

Each item in this book is presented as a puzzle or problem, with an introductory header that looks like this:


The topic tag and difficulty rating (typically anything from 3 to 9-1/2, based on a scale of 10) gives you a hint of what you're in for. Note that the difficulty rating is my own subjective guess at how difficult I expect most people will find each problem, so you may well find that a given 7 problem is easier for you than another 5 problem. Still, it's better to be prepared for the worst when you see a 9-1/2 monster coming down the pike.

You don't have to read the sections and problems in order, but in several places there are "miniseries" of related problems that you'll see designated as "Part 1," "Part 2," and so onosome all the way up to "Part 10." Those miniseries are best read as a group. How We Got Here: GotW and PeerDirect

The C++ Guru of the Week series has come a long way. GotW was originally created late in 1996 to provide interesting challenges and ongoing education for our own development team here at PeerDirect. I wrote it to provide an entertaining learning tool, including rants on things like the proper use of inheritance and exception safety. As time went on, I also used it as a means to provide our team with visibility to the changes being made at the C++ standards meetings. Since then, GotW has been made available to the general C++ public as a regular feature of the Internet newsgroup comp.lang.c++.moderated, where you can find each new issue's questions and answers (and a lot of interesting discussion).

Using C++ well is important at PeerDirect for many of the same reasons it's important in your company, if perhaps to achieve different goals. We happen to build systems softwareo for distributed databases and database replicationoin which enterprise issues such as reliability, safety, portability, efficiency, and many others are make-or-break concerns. The software we write needs to be able to be ported across various compilers and operating systems; it needs to be safe and robust in the presence of database transaction deadlocks and communications interruptions and programming exceptions; and it's used by customers to manage tiny databases sitting inside smart cards and pop machines or on PalmOS and WinCE devices, through to departmental Windows NT and Linux and Solaris servers, through to massively parallel Oracle back-ends for Web servers and data warehouseso with the same software, the same reliability, the same code. Now that's a portability and reliability challenge, as we creep up on half a million tight, noncomment lines of code.

To those of you who have been reading Guru of the Week on the Internet for the past few years, I have a couple of things to say:

Thank you for your interest, support, e-mails, kudos, corrections, comments, criticisms, questionsoand especially for your requests for the GotW series to be assembled in book form. Here it is; I hope you enjoy it. This book contains a lot more than you ever saw on the Internet.

Exceptional C++ is not just a cut-and-paste of stale GotW issues that are already floating out there somewhere in cyberspace. All the problems and solutions have been considerably revised and reworkedofor example, Items 8 through 17 on exception safety originally appeared as a single GotW puzzle and have now become an in-depth, 10-part miniseries. Each problem and solution has been examined to bring it up to date with the then-changing, and now official, C++ standard.

So, if you've been a regular reader of GotW before, there's a lot that's new here for you. To all faithful readers, thanks again, and I hope this material will help you continue to hone and expand your software engineering and C++ programming skills. Herb Sutter
June 1999

1. Stroustrup B. The C++ Programming Language, Third Edition (Addison Wesley Longman, 1997).
2. Lippman S. and Lajoie J. C++ Primer, Third Edition (Addison Wesley Longman, 1998).
3. Meyers S. Effective C++ CD: 85 Specific Ways to Improve Your Programs and Designs (Addison Wesley Longman, 1999). An online demo is available at meyerscd.awl.


Hero Quick Promo
Holiday Deals in Kindle Books
Save up to 85% on more than 1,000 Kindle Books. These deals are valid until November 30, 2015. Learn more

Product Details

  • Paperback: 240 pages
  • Publisher: Addison-Wesley Professional (November 28, 1999)
  • Language: English
  • ISBN-10: 0201615622
  • ISBN-13: 978-0201615623
  • Product Dimensions: 7.4 x 0.5 x 9.1 inches
  • Shipping Weight: 15.5 ounces (View shipping rates and policies)
  • Average Customer Review: 4.7 out of 5 stars  See all reviews (40 customer reviews)
  • Amazon Best Sellers Rank: #409,747 in Books (See Top 100 in Books)

More About the Author

Herb Sutter is a recognized expert on C++ software development and regularly gives invited talks at conferences around the world. Author of more than 130 technical articles, Herb is also secretary of the ISO/ANSI C++ standards committee, contributing editor and columnist for C/C++ Users Journal, and former editor-in-chief of C++ Report. His popular "C++ Guru of the Week" series is published on the primary Internet newsgroup for the C++ language, comp.lang.c++.moderated, which he has moderated since its inception in 1995. Contact him at

Customer Reviews

Most Helpful Customer Reviews

51 of 52 people found the following review helpful By G. Powell on August 23, 2000
Format: Paperback
As a professional programmer I find the Guru of the Week questions annoying, because they usually point out that I don't know some dang thing about C++. (I don't know too many people who appreciate being pointed out how dumb they are weekly.) Then someone who appears to have nothing better to do than solve C++ puzzles jumps in with a 6 page submission on how to solve the problem, which is usually wrong. Then six more self appointed guru's jump in and fill pages of discussion, Then after filling my head with all the wrong answers to a particular problem, Herb smuggly answers the question with the real answer. Anoints another guru and the process repeats. In the meantime I've lost total interest in the discussion. Thank you for Deja news where I can read the first and last postings(The puzzle and the solution).
That said, this book is full of those got ya! puzzles. Fortunately Herb is a kind writer and you don't feel too dumb when he points out why a particular puzzle has a problem and what it is. And like Deja news you can skip all the wrong answers, arguments about the arcane and get right to the meat of the problem. Herb also got a chance to make the puzzles more clear, where the language of the original puzzle confused the issue unnecessarily.
The best reason to buy this book is that its the only published text so far on how to use C++ Exceptions. There are some articles in C++ Report but not many on the traps and pitfalls of their usage. Stroustrup's book "C++ Programming Language" tells you how the mechanism works, and makes some suggestions. Herb tells you what it will cost you if you don't use them, only partially use them, or totally abuse them. And he shows you how a minor misuse can make you have major problems.
Read more ›
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
48 of 51 people found the following review helpful By Charles Ashbacher HALL OF FAMETOP 500 REVIEWERVINE VOICE on January 31, 2000
Format: Paperback
In learning computing, the most prized element is a relevant problem with a detailed, understandable solution. Many studies have indicated that the skills gap between those who program adequately and those who are exceptional is enormous. Unlike some other areas, the gurus of computing are more often than not quite willing to share their expertise with others.
This collection of problems, derived from the C++ Guru of the Week newsgroup, collectively form one of the most valuable sources of real insight into the language.
C++ is often criticized as being a language that is full of potential problems of the "gotcha" variety. A "gotcha" problem is one where a seemingly logical choice can lead to a disaster. Many of these problems can be placed in that category, but to focus on that would miss much of what they can teach you.
The most significant point of the problems is that they teach you how to program many complex tasks in a manner that is truly safe from potential errors. All of the problems are tagged with a level of difficulty, although like most people, I consider that to be of dubious benefit, as there is an enormous difference in what programmers find difficult. In my opinion, the most valuable section of the book is the ten parts dealing with the creation of exception-safe code. While some do have trouble with it, most people find it easy to understand the fundamentals of what exceptions are. However, writing code that is safe from the unexpected consequences of a thrown exception is a decidedly non-trivial problem. Especially when the new and delete operators can throw an exception. The sections that deal with making new and delete exception-safe alone justify the purchase of the book.
Read more ›
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
27 of 27 people found the following review helpful By David Vandevoorde on December 3, 1999
Format: Paperback
Gosh, this is a nice book.
It is based on Herb's "Guru of the Week" column in the comp.lang.c++.moderated Usenet forum: nontrivial C++ issues presented as questions around one or a few code fragments. The electronic column was popular from its inception, but the book raises the quality of the discussion to new heights.
A fair number of problems covering a very diverse range of topics (physical code organization, exception safety, const correctness, etc.) are treated in much depth. The focus appears to be mainly on pitfalls to avoid, and how to avoid them, though various creative C++ programming techniques are also taught. As a result, the book contains many "recommended practices", that are nicely emphasized using boxes and icons.
The discussion is generally up to date with the C++ standard, and some fluency in C++ is required to get the most out of this book. However, the details of how things work are expounded with sufficient detail and clarity that you don't need to be a "Guru of a Week" to understand the issues in their entirety.
Despite the considerable breadth and depth of the volume, it weighs in at only about 200 pages: a welcome break from the giant C++ tutorials (this is not a tutorial, mind you!). Herb's technical writing style is lucid, and the typography/layout is actually attractive.
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
31 of 32 people found the following review helpful By Stephen Vinoski on January 20, 2000
Format: Paperback
I've been programming in C++ for 12 years, and this is the first C++ book I've read in awhile that I learned significantly from. The section on exception safety is unmatched in any book or article I've ever read. The style and format of this book make it easy to read, even though some of the concepts it covers are very advanced. After you read this book, put it somewhere handy, because I guarantee you will refer to it often as you go back and fix your code to take into account all the new things the book teaches you.
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse

Most Recent Customer Reviews

Set up an Amazon Giveaway

Amazon Giveaway allows you to run promotional giveaways in order to create buzz, reward your audience, and attract new followers and customers. Learn more
Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
This item: Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
Price: $41.26
Ships from and sold by