C++ is an object-oriented enhancement of the C programming language and is becoming the language of choice for serious software development.
C++ has crossed the Single Book Complexity Barrier. The individual features are not all that complex, but when put together in a program they interact in highly non-intuitive ways. Many books discuss each of the features separately, giving readers the illusion that they understand the language. But when they try to program, they're in for a painful surprise (even people who already know C).
C++: The Core Language is for C programmers transitioning to C++. It's designed to get readers up to speed quickly by covering an essential subset of the language.
The subset consists of features without which it's just not C++, and a handful of others that make it a reasonably useful language. You can actually use this subset (using any compiler) to get familiar with the basics of the language.
Once you really understand that much, it's time to do some programming and learn more from other books. After reading this book, you'll be far better equipped to get something useful out of a reference manual, a graphical user interface programming book, and maybe a book on the specific libraries you'll be using. (Take a look at our companion book, Practical C++ Programming.)
C++: The Core Language includes sidebars that give overviews of all the advanced features not covered, so that readers know they exist and how they fit in. It covers features common to all C++ compilers, including those on UNIX, Windows NT, Windows, DOS, and Macintosh.
Comparison: C++: The Core Language vs. Practical C++ Programming
O'Reilly's policy is not to publish two books on the same topic for the same audience. We'd rather spend twice the time on making one book the industry's best. So why do we have two C++ tutorials? Which one should you get?
The answer is they're very different. Steve Oualline, author of the successful book Practical C Programming, came to us with the idea of doing a C++ edition. Thus was born Practical C++ Programming. It's a comprehensive tutorial to C++, starting from the ground up. It also covers the programming process, style, and other important real-world issues. By providing exercises and problems with answers, the book helps you make sure you understand before you move on.
While that book was under development, we received the proposal for C++: The Core Language. Its innovative approach is to cover only a subset of the language -- the part that's most important to learn first -- and to assume readers already know C. The idea is that C++ is just too complicated to learn all at once. So, you learn the basics solidly from this short book, which prepares you to understand some of the 200+ other C++ books and to start programming.
These two books are based on different philosophies and are for different audiences. But there is one way in which they work together. If you are a C programmer, we recommend you start with C++: The Core Language, then read about advanced topics and real-world problems in Practical C++ Programming.
Table of Contents:
Preface Chapter 1. Object-Oriented Programming with Classes Object-Oriented Programming Classes Chapter 2. C++ Without Classes Three to Start Function Changes Stricter Typing Dynamic Initialization of Globals Some Final Lists Chapter 3. Abstraction with Member Functions The Abstraction Using a struct Using a struct with Interface Functions Using a Class with Member Functions Chapter 4. Encapsulation with Access Specifiers Access Specifiers A Member Can Have Any Access Level Unlimited Access Specifiers Private Does Not Mean Invisible Friend Classes Chapter 5. Hierarchy with Composition and Derivation Composition Derivation Chaining Chapter 6. Better Abstraction with Constructors and Destructors The Default Constructor The Destructor Built-in Types Hierarchy and Chaining Implicit Default Constructors and Destructors Beyond Chaining Explicit Invocation Flow of Control Time of Invocation Chapter 7. Better Abstraction with new and delete Dynamic Objects Dynamic Arrays Mixing Allocators realloc() Out of Memory Chapter 8. References Parameter Versus Argument Passing by Value in C and C++ Passing by Reference in C++ Reference Versus Pointer Returning by Reference in C++ Overloading: Reference Versus Value Binding Problems Chapter 9. Better Abstraction with Other Special Member Functions Assignment Operator Copy Constructor Printing an Object Summary Chapter 10. An Example Class Using an int Using a Static Array Using a Dynamic Array Using a Reference-Counted String Copy Constructor Quiz Summary Table Chapter 11. Better Hierarchy with Templates Defining a Template Using a Template to Define an Object Careful with That Expansion, Eugene Modifying Container Class Elements Chapter 12. Polymorphism with Virtual Functions Polymorphism in C Virtual Functions Polymorphism in C++ More About Virtual Functions Chapter 13. More About Polymorphism Abstract Classes Derivation Decisions Virtual Decisions Calling Virtual Functions from Constructors and Destructors Under the Hood Pitfalls Chapter 14. Implementing an Object-Oriented Design Implementation Table Examples Is-A, Has-A Defensive Implementation Chapter 15. An Example Program The String Class The Rule, CwRule, and HwRule Classes The Scanner Class Using the Program Example Code Chapter 16. What to Study Next const inline Constructors with Parameters Member Initialization Lists Efficient Copy Constructor Special Member Functions Appendix A. C++ Operators Appendix B. One Problem with Returning by Value Glossary Index
About the Author :
Gregory Satir helps develop online publishing tools in the Portland, Oregon, office of Electronic Book Technologies. He graduated with a B.S. in computer science from Brown University. Doug Brown is a consultant/contractor in Beaverton, Oregon. He has been developing software for circuit simulation, synthesis, and testing since 1977. Doug coauthored lex & yacc, another O'Reilly & Associates Nutshell Handbook. He received an M.S. in electrical engineering from the University of Illinois at Urbana-Champaign in 1976.