Return to Home Page
      Blog     Consulting     Seminars     Calendar     Books     CD-ROMS     Newsletter     About     FAQ      Search

Black Belt C++ Chapter descriptions

The first two chapters, Moving to C++ by Hank Shiffman, and A C Programmer's First Encounter with C++, by Steve Ross, at first seem to cover basic topics. However, you'll soon see that Hank's chapter looks at the nooks and crannies of C++ as a "better C" and aspects of C++ as a general programming language that most texts ignore (or worse, don't understand). Steve's chapter is valuable because he's dealt with a lot of people considering the change to C++. Not only will it fill in some of your knowledge and provide design techniques, but it provides answers to questions you'll get when trying to motivate your own company to move to the language.

When you begin reading Scott Meyer's Examining C++ Development Tools, you may think you've wandered into a strange universe where the humor columnist Dave Barry knows about computer programming. Yet Scott's questions, as always, are right to the point. Reading this before a trade show will provide hours of entertainment with embarrassing questions for C++ tool vendors.

The easiest way to deal with multiple inheritance is to "just say no." Tim Gooch's Using Multiple Inheritance Effectively sidesteps the ongoing debate about whether MI should be in the language (it's there, and won't go away) and instead looks at the best way to use it in your designs, a topic which doesn't get nearly as much coverage. You may still choose to avoid MI after reading this chapter but you'll have a much better view of the issues.

In Compilation Firewalls, Dan Saks discusses a problem everyone discovers when separating the interface from the implementation: C++ only goes part way. The "compilation interface" includes all the private members because the compiler has to see them, even though the end user really only wants or needs to see the public interface. This also means that changes to the underlying implementation cause recompilations even though the use of the class doesn't change. Dan solves this problem by demonstrating techniques to more completely separate the interface from the implementation, and reduce needless recompilation during development.

My chapter is a potpourri of subjects and techniques, including a brief introduction to containers and iterators, overloading new, delete and changing the new-handler, modifying new & delete for arrays, smart pointers, automatic type conversion, pointers to members, the function call operator, selecting member versus friend when overloading operators, and the programming techniques of "wrappers" and inheriting from C structs, reference counting, "virtual constructors" and approaches to debugging.

As mentioned earlier, Tom Keffer is president and founder of Rogue Wave, which specializes in the development of C++ class libraries. In his chapter Designing C++ Class Libraries, he provides some insight into what he's learned about the creation of robust, reusable classes.

Jan Gray makes the Microsoft C++ compiler tick. In C++ Under the Hood, you'll learn what makes it tick, too, in particular the way objects are laid out, how members are accessed and how member functions are called. He doesn't stop at the simple stuff, of course: the explanations cover the thorny topics of multiple inheritance and exception handling.

Nathan Myers is in charge of Rogue Wave's heap++ dynamic memory allocation package. In Memory Management in C++ you'll learn what he knows about the implementation and use of alternate memory-management techniques, as well as the limitations of the built-in versions.

Finally, no book is complete without some treatment of the thorny topic of design methodology. But instead of the usual approach of endorsing one particular methodology, Steven Sheetz looks at the general problem of using any methodology with C++, based on interviews and "cognitive mapping" techniques to explore the way people create mental models about conceptual systems. If you're considering an analysis and design methodology, you need to read this chapter first.

I sincerely hope you will come away from this book with new and fresh insights on the language and a greater understanding of subjects that were previously fuzzy or unknown. In one way of looking at the world a person is defined by their actions, so I hope this book will help you become a better programmer.

Search     Home     WebLog     Consulting     Seminars     Calendar     Books     CD-ROMS     Newsletter     About     Contact     Site Design     Server Maintenance     Powered by Zope
©2007 MindView, Inc.