Professional C__ - Marc Gregoire [516]
Nick studied computer science at Stanford University, where he earned bachelor and master of science degrees, with a concentration in systems. In addition to his industry experience, he taught C++ for one year at Fullerton Community College.
Nick lives with his wife and two children in beautiful Colorado, where he enjoys playing in the snow (having been deprived of winters growing up in southern California).
SCOTT J. KLEPER began his programming career in elementary school, writing adventure games in BASIC for the Tandy TRS-80. As the resident Mac geek at his high school, Scott moved to higher-level languages and released several award-winning shareware applications.
Scott attended Stanford University, where he earned bachelor and master of science degrees in computer science, with a concentration in Human-Computer Interaction. While in college, Scott served as a teaching assistant for classes involving introductory programming, object-oriented design, data structures, GUI frameworks, group projects, and Internet programming. He later adapted “Professional C++” for a course at Stanford.
Since graduating, Scott has served as a lead engineer on the founding teams of several companies. In 2006, Scott co-founded Context Optional, Inc., a leading provider of Social Marketing technology.
Outside of work, Scott is a compulsive online shopper, an avid reader, and an awful guitarist.
ABOUT THE TECHNICAL EDITOR
JOSEPH M. NEWCOMER received his PhD in Computer Science from Carnegie Mellon University (CMU). Since then, he has been faculty at CMU, done a high-tech compiler startup, been one of the founding scientists at the Software Engineering Institute at CMU, and been an independent software developer. He has been a Microsoft MVP in the C/C++/MFC area for 16 years. He is co-author of two books on Microsoft Windows programming, Win32 Programming (with Brent Rector, Addison-Wesley, 1997) and Developing Windows NT Device Drivers (with Ed Dekker, Addison-Wesley, 1999). He is one of the pioneers in desktop publishing and publish-from-database technolgy, in the early 1970s.
ACKNOWLEDGMENTS
I THANK THE JOHN WILEY & SONS and Wrox Press editorial and production teams for their support. Especially, thank you to Robert Elliott, executive editor at Wiley, for giving me a chance to write this book, and Adaobi Obi Tulton, senior project editor at Wiley, for managing this project.
I also thank the authors of the first edition, Nicholas A. Solter and Scott J. Kleper, for doing such a great job on which I could base this second edition.
A very special thank you to my technical editor, Joseph M. Newcomer, for his meticulous technical review. His many constructive comments and ideas have certainly made this book better.
Also, a big thank you to Ordina Belgium (www.ordina.be), the company for which I was working while writing this book, for the generous support they provided me.
Of course, the support and patience of my girlfriend, Zulija N., and my nearest family, my parents and my brother, were very important in finishing this book.
Finally, I thank you, as readers, for trying this approach to professional C++ software development.
INTRODUCTION
FOR MANY YEARS, C++ has served as the de facto language for writing fast, powerful, and enterprise-class object-oriented programs. As popular as C++ has become, the language is surprisingly difficult to grasp in full. There are simple, but powerful, techniques that professional C++ programmers use that don’t show up in traditional texts, and there are useful parts of C++ that remain a mystery even to experienced C++ programmers.
Too often, programming books focus on the syntax of the language instead of its real-world use. The typical C++ text introduces a major part of the language in each chapter, explaining the syntax and providing an example. Professional C++ does not follow this pattern. Instead of giving you just the nuts and bolts of the language with