Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
- By Herb Sutter
- Published Nov 18, 1999 by Addison-Wesley Professional. Part of the C++ In-Depth Series series.
- Copyright 2000
- Dimensions: 7-3/8x9-1/4
- Pages: 240
- Edition: 1st
- ISBN-10: 0-201-61562-2
- ISBN-13: 978-0-201-61562-3
Register your product to gain access to bonus material or receive a coupon.
Product Author Bios
Herb Sutter is the author of three highly acclaimed books, Exceptional C++ Style, Exceptional C++, and More Exceptional C++ (Addison-Wesley). He chairs the ISO C++ standards committee, and is contributing editor and columnist for C/C++ Users Journal. As a software architect for Microsoft, Sutter leads the design of C++ language extensions for .NET programming.
Exceptional C++ shows by example how to go about sound software engineering in standard C++. Do you enjoy solving thorny C++ problems and puzzles? Do you relish writing robust and extensible code? Then take a few minutes and challenge yourself with some tough C++ design and programming problems.
The puzzles and problems in Exceptional C++ not only entertain, they will help you hone your skills to become the sharpest C++ programmer you can be. Many of these problems are culled from the famous Guru of the Week feature of the Internet newsgroup comp.lang.c++.moderated, expanded and updated to conform to the official ISO/ANSI C++ Standard.
Each problem is rated according to difficulty and is designed to illustrate subtle programming mistakes or design considerations. After you've had a chance to attempt a solution yourself, the book then dissects the code, illustrates what went wrong, and shows how the problem can be fixed. Covering a broad range of C++ topics, the problems and solutions address critical issues such as:
- Generic programming and how to write reusable templates
- Exception safety issues and techniques
- Robust class design and inheritance
- Compiler firewalls and the Pimpl Idiom
- Name lookup, namespaces, and the Interface Principle
- Memory management issues and techniques
- Traps, pitfalls, and anti-idioms
Try your skills against the C++ masters and come away with the insight and experience to create more efficient, effective, robust, and portable C++ code.
49 of 50 people found the following review helpful
One of the few that shows how to use C++ exceptions,
This review is from: Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions (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... Read more
30 of 30 people found the following review helpful
Highly informative, even for veteran C++ programmers,
This review is from: Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions (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.
47 of 50 people found the following review helpful
Exceptional problems, exceptional solutions,
This review is from: Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions (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... Read more
› See all 38 customer reviews...
Praise For Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
"This book provides more techniques in solving real life problems in C++. The book is very well written and informative." - John Kwan, Hewlett-Packard
"This book is a very valuable book for a wide range of C++ developers. The great thing about the questions and solutions dealing with exceptions is that they present the most important design considerations for creating *any* C++ class." - Dennis Mancl, Lucent
"The book’s treatment of exception safety alone makes it an invaluable addition to every C++ programmer’s bookshelf. ... I don’t see how a project attempting to program in the presence of exceptions can proceed without at least being familiar with this material." He then concludes: Exceptional C++... is for the working programmer looking for ways to use C++ more effectively (and who among us isn’t?) -- in particular, the Standard C++ language features and libraries. ... I can’t imagine anyone reading this book and not learning something new. I know I did." - November 2000 issue of C/C++ Users Journal's (CUJ) online C++ Experts Forum, longtime C++ guru and former C++ Report editor-in-chief Stan Lippman
Table of Contents
GENERIC PROGRAMMING AND THE C++ STANDARD LIBRARY.
EXCEPTION-SAFETY ISSUES AND TECHNIQUES.
CLASS DESIGN AND INHERITANCE.
COMPILER FIREWALLS AND THE PIMPL IDIOM.
NAME LOOKUP, NAMESPACES, AND THE INTERFACE PRINCIPLE.
TRAPS, PITFALLS, AND ANIT-IDIOMS.
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:
|ITEM ##: THE TOPIC OF THIS PUZZLE||DIFFICULTY: X|
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
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 http://www.meyerscd.awl.com.
Click below for Errata related to this title:
This book includes free shipping!
Get access to thousands of books and training videos about technology, professional development and digital media from more than 40 leading publishers, including Addison-Wesley, Prentice Hall, Cisco Press, IBM Press, O'Reilly Media, Wrox, Apress, and many more. If you continue your subscription after your 30-day trial, you can receive 30% off a monthly subscription to the Safari Library for up to 12 months. That's a total savings of $199.