Structure of This BookThis book is divided into two interleaved sections that cover the language and the library, and a section of appendixes. Roughly speaking, the language is the part of C++ that does not require any additional #include headers or files. The library is the part of C++ that is declared in the standard headers. Chapter 1-Chapter 7, Chapter 11, and Chapter 12 cover the language. The first seven chapters form the main language reference, organized by topic. It is customary for a programming reference to contain a formal grammar, and this book does so in Chapter 12, which is organized alphabetically by keyword (with some additional entries for major syntactic categories, such as expressions). Chapter 11 is a reference for the preprocessor. Chapter 13 is the library reference, organized alphabetically by header. Chapter 8-Chapter 10 present an overview of the library and introduce the topics that span individual headers. Sometimes, information is duplicated, especially in Chapter 12. My goal has been to present information when you need it, where you need it. I tried to balance the need for a single, clear, complete description of each language feature with the desire to reduce the number of cross references you must chase before you can understand that language feature. Here are more detailed descriptions of each chapter. Chapter 1 describes the basic rules for the C++ language: character sets, tokens, literals, and so on. Chapter 2 describes how objects, types, and namespaces are declared and how names are looked up. Chapter 3 describes operators, precedence, and type casts. Chapter 4 describes all the C++ statements. Chapter 5 describes function declarations and definitions, overload resolution, argument passing, and related topics. Chapter 6 describes classes (and unions and structures), members, virtual functions, inheritance, accessibility, and multiple inheritance. Chapter 7 describes class and function template declarations, definitions, instantiations, specializations, and how templates are used. Chapter 8 introduces the standard library and discusses some overarching topics, such as traits and allocators. Chapter 9 introduces the I/O portion of the standard library. Topics include formatted and unformatted I/O, stream buffers, and manipulators. Chapter 10 introduces the suite of container class templates, their iterators, and generic algorithms. This is the portion of the library that has traditionally been called the Standard Template Library (STL). Chapter 11 is an alphabetical reference for the preprocessor, which is part of the language, but with a distinct set of syntactic and semantic rules. Chapter 12 is an alphabetical reference for the language and grammar. Backus-Naur Form (BNF) syntax descriptions are given for each keyword and other language elements, with pointers to the first seven chapters for the main reference material. Chapter 13 is a reference for the entire standard library, organized alphabetically by header, and alphabetically by name within each header section. Appendix A describes ways that some compilers extend the language: to satisfy customer need, to meet platform-specific requirements, and so on. Appendix B describes a few interesting, open source C++ projects. You can find information about additional projects on this book's web site (http://www.tempest-sw.com/cpp/ ). The Glossary defines some words and phrases used throughout this book and in the C++ community. |