[ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- #define macros
 
 - Evil but sometimes useful ... [32.4], [33.5], [33.6]
 
 - Evil! ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Prefer const vs. #define ... [29.7]
 
 - See also Inline functions ... [9.1], [9.5], [28.2], [30.3], [32.4], [33.5], [33.6]
 
 - With if ... [39.4]
 
 - With multiple lines ... [39.5]
 
 - With token pasting ... [39.6]
 
 
 
- #include
 
 
- ?: operator ... [27.6]
 
- ! operator (bang!) ... [29.13]
 
- ## = token pasting ... [39.6]
 
"A"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- A form of type safety (Const correctness) ... [18.2]
 
- A2PS (see Pretty printing) ... [40.3]
 
- ABC (see also Inheritance) ... [22.2], [22.3]
 
- Abstract (Meaningwise) state vs. Concrete (Bitwise) state ... [18.10], [18.11]
 
- Abstract functions ... [20.6], [22.3], [22.4]
 
- Access rules
 
 - protected and private inheritance ... [24.6]
 
 - protected and private members ... [19.5], [19.6]
 
 
 
- Accessing std::vector<T>-elements by pointers ... [34.3]
 
- Acronym "FAQ" ... [6.18]
 
- Acronyms ... [5.1]
 
- Ada vs. C++ ... [6.5]
 
- Addition operator: operator+ ... [13.1]
 
- Address-of operator: operator& ... [16.25]
 
- Advertised behavior, contracts ... [21.11], [21.12]
 
- AFAICS (Acronym) ... [5.1]
 
- Aggregation (see also Composition) ... [24.2]
 
- Air vehicle (example) ... [25.5]
 
- Algorithm selection, Serialization and ... [36.2]
 
- Aliasing of const and non-const pointers (Const correctness) ... [18.15]
 
- Aliasing
 
 
- All Terrain Vehicle (ATV) ... [30.5]
 
- All; One size does not fit all ... [6.16], [6.17], [9.3], [18.8], [18.9], [19.8], [23.3], [25.2], [25.3], [29.7], [29.11], [36.2], [36.3], [36.5], [36.6]
 
- Amphibious vehicle (example) ... [25.7]
 
- ANSI ... [6.12]
 
 
- Answers, Not Just Questions (in the FAQ) ... [6.18]
 
- Anything: Container of Thing vs. of Anything ... [21.3]
 
- Apple: Bag of Apple vs. of Fruit ... [21.3]
 
- Arenas, memory ... [11.14]
 
- Arithmetic of pointers ... [8.7], [11.14], [13.9], [13.13], [21.4], [23.12], [31.7], [34.3]
 
- Arithmetic operators (see also Operator overloading) ... [13.9]
 
- Arithmetic, floating point ... [29.17], [29.18]
 
- Arity ... [13.7]
 
- Arrays
 
 - Elements init'd via the default ctor ... [10.5]
 
 - Evilness of ... [16.17], [17.5], [21.5], [34.1]
 
 - How to access the raw array stored inside a std::vector<T> ... [34.3]
 
 - Multi-dimensional, Using pointers ... [16.16]
 
 - Multi-dimensional, Using specific classes ... [16.17]
 
 - Multi-dimensional, Using templates ... [16.18], [16.19]
 
 - Specifying length at runtime ... [16.20]
 
 
 
- Artistic Style (see Pretty printing) ... [40.3]
 
- Ask the right questions
 
 - Don't trust an answer from someone who hasn't heard the real question ... [25.2]
 
 - On multiple inheritance ... [25.5], [25.7]
 
 - What should be used ... [18.8], [18.9]
 
 - When/where to invest your time ... [19.9]
 
 - Who will create them ... [19.8]
 
 - Why using a try block here ... [17.13]
 
 
 
- Assigning a reference ... [8.2]
 
- Assigning references ... [8.2]
 
- Assignment operator (see also Operator overloading) ... [12], [22.5]
 
- Assignment operator ... [12]
 
 
- Associative array ... [34.2]
 
- Associativity ... [13.7]
 
- atoi() ... [39.2]
 
- Attachments on postings: don't! ... [5.4]
 
- ATV ... [30.5]
 
- Author ... [1.1]
 
- auto_ptr ... [17.4], [23.6]
 
- Avoid catch-by-pointer (usually) (see also under Exceptions) ... [17.7], [17.8]
 
- Avoid catch-by-value (see also under Exceptions) ... [17.7]
 
- Avoiding an overabundance of try/catch blocks (see also under Exceptions) ... [17.13]
 
- Avoiding code duplication ... [35.9]
 
- Avoiding decision logic ... [20.6]
 
"B"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Backtracking ... [5.3]
 
- Bad input, ignoring (input/output) ... [15.3]
 
- Bad programming practices ... [6.15]
 
 - Arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Casting Derived** → Base** ... [21.2]
 
 - Casting Foo** → const Foo** ... [18.17]
 
 - Casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Derived** → Base**, Casting ... [21.2]
 
 - Explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Foo** → const Foo**, Casting ... [18.17]
 
 - Hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Missing virtual on some base class dtors ... [20.7]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Mixing realloc() and new ... [16.5]
 
 - Passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Preprocessor ... [29.8]
 
 - Unnecessary global variables ... [33.2], [39.8]
 
 
 
- bad_alloc (see also under Exceptions) ... [16.6], [16.7]
 
- Bag of Apple vs. of Fruit ... [21.3]
 
- Bang (!) operator ... [29.13]
 
- Base class ... [19.3]
 
- Basics (Const correctness) ... [29.6]
 
- Basics of templates (see also under Templates) ... [35.1]
 
- Beautifier, Code (see Pretty printing) ... [40.3]
 
- Behavior: Advertised vs. implemented ... [21.11], [21.12]
 
- Behavioral equivalence (see also Operator overloading) ... [13.9]
 
- Beliefs, naive/wrong
 
 - "Always" and "Never" rules ... [23.3]
 
 - "Evil" things should never be used ... [6.15]
 
 - Always name numeric literals ... [29.11]
 
 - Friendship breaks encapsulation ... [14.2]
 
 - inline functions always improve performance ... [9.3]
 
 - Methods always better than friend-functions ... [15.9]
 
 - Multi-line macros simply use {...} ... [39.5]
 
 - Never use #define ... [29.7]
 
 - Never use multiple-inheritance ... [25.2], [25.3]
 
 - protected data is evil ... [19.8]
 
 - Software has rules that always apply ... [6.16]
 
 - There exists a purely technical definition of "good" ... [6.17]
 
 - Token-pasting doesn't require two levels of macros ... [39.6]
 
 
 
- Big Picture Issues ... [6]
 
 - Business-centricity vs. Techno-centricity ... [6.5]
 
 - C++ is a practical tool ... [6.1]
 
 - C++ is not a perfect tool ... [6.2]
 
 - Length of time needed to learn OO/C++ ... [6.7]
 
 - Size of the installed base ... [6.6]
 
 - Some advantages of Generic Programming ... [6.4]
 
 - Some advantages of OO ... [6.3]
 
 - Standardization of C++ ... [6.12], [6.13]
 
 
 
- Big Three, Law of ... [16.17], [22.5], [27.10]
 
- Binary compatibility between vendors ... [38.9]
 
- Binary format mechanics, Serialization and ... [36.6]
 
- Binary format tradeoffs, Serialization and ... [36.3]
 
- Binary mode (input/output) ... [15.13]
 
- Binary mode for opening streams ... [15.12]
 
- Binary mode for std::cin and std::cout ... [15.13]
 
- Binary mode on MS-DOS (input/output) ... [15.12]
 
- Bind Dynamically During Initialization Idiom ... [23.6]
 
- Binding: Static vs. dynamic ... [20.2], [20.3], [20.4]
 
- Bits per byte ... [26.4], [26.5], [26.6]
 
- Bitwise (Concrete) state vs. Meaningwise (Abstract) state ... [18.10], [18.11]
 
- Bizarre syntax: use only when you must ... [27.14]
 
- Bjarne Stroustrup's web site ... [29.4]
 
- Bloat of code ... [9.3]
 
- Book (see C++ FAQ Book) ... [3]
 
- Books ... [28]
 
 
- boolalpha ... [35.8]
 
- Borland free C++ compiler ... [38.1]
 
- Bosnian translation of this document ... [2.3]
 
- Braces: whitespace standards ... [29.10]
 
- Bridge pattern ... [25.5]
 
- British Informatics Olympiad ... [29.2]
 
- Broken mindset (see also under Exceptions) ... [17.12], [17.13]
 
- BTW (Acronym) ... [5.1]
 
- Bugs, subtle ... [6.15]
 
 - Arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Casting Derived** → Base** ... [21.2]
 
 - Casting Foo** → const Foo** ... [18.17]
 
 - Casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Derived** → Base**, Casting ... [21.2]
 
 - Explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Foo** → const Foo**, Casting ... [18.17]
 
 - Hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Missing virtual on some base class dtors ... [20.7]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Mixing realloc() and new ... [16.5]
 
 - Passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Preprocessor ... [29.8]
 
 - Unnecessary global variables ... [33.2], [39.8]
 
 
 
- Build objects: constructors ... [10.1]
 
- Built-in (intrinsic, primitive) data types ... [26]
 
 
- Business criteria dominate technical criteria ... [6.5]
 
- Business issues dominate technical issues ... [6.17]
 
- By value
 
 - Return-by-value optimization ... [10.9]
 
 
 
- Byte
 
 
"C"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- C language
 
 
- C++ books ... [28]
 
 
- C++ compiler
 
 
- C++ compilers
 
 - Free: Borland free C++ compiler ... [38.1]
 
 - Free: Digital Mars free C++ compiler ... [38.1]
 
 - Free: DJGPP free C++ compiler ... [38.1]
 
 - Free: Microsoft C++ freely downloadable command-line compiler ... [38.1]
 
 - Free: MinGW free C++ compiler ... [38.1]
 
 
 
- C++ FAQ Book ... [3]
 
 - Is much bigger than this Lite document ... [3.2]
 
 - ISBN ... [3.1]
 
 - Not same as the on-line ("Lite") document ... [3.2]
 
 - URL for Amazon.com ... [3.1]
 
 
 
- C++ FAQ Lite ... [3]
 
 - Author ... [1.1]
 
 - Availability on-line ... [2]
 
 - Book is much bigger ... [3.2]
 
 - Bosnian translation ... [2.3]
 
 - Chinese (Mainland/GB encoding) translation ... [2.4]
 
 - Chinese (Taiwan/Big5 encoding) translation ... [2.4]
 
 - Copy permissions ... [1]
 
 - Copying permissions ... [1.3]
 
 - Copyright notice ... [1.2]
 
 - Croatian translation ... [2.3]
 
 - French translation ... [2.5]
 
 - Greek translation ... [2.6]
 
 - Mirror WWW sites ... [2.1]
 
 - No Warranty ... [1.4]
 
 - Not same as C++ FAQ Book ... [1.6], [3.2]
 
 - Polish translation ... [2.7]
 
 - Portuguese translation ... [2.8]
 
 - Recent changes ... [4]
 
 - Russian translation ... [2.9]
 
 - Serbian translation ... [2.3]
 
 - Turkish translation ... [2.10]
 
 
 
- C++ Keywords
 
 - catch ... [17.1]
 
 - class ... [7.1], [7.8]
 
 - const ... [13.9], [18.1]
 
 - const_cast ... [18.13]
 
 - delete ... [13.10], [16.9], [16.11], [16.12], [16.14], [16.15], [38.7]
 
 - explicit ... [13.9], [20.7]
 
 - export ... [35.14]
 
 - extern ... [32], [32.3]
 
 - for ... [39.8]
 
 - if ... [17.1]
 
 - inline ... [9.1], [9.6], [9.7], [9.9], [39.13]
 
 - mutable ... [18.13]
 
 - new ... [16.1], [16.4], [16.5], [16.11]
 
 - operator ... [13.4]
 
 - private ... [7.4], [7.6], [24]
 
 - protected ... [7.4], [24]
 
 - public ... [7.8]
 
 - sizeof ... [26.1], [26.2], [26.5], [26.6]
 
 - struct ... [7.1], [7.8]
 
 - template ... [35.14]
 
 - this ... [10.7]
 
 - throw ... [17.1], [17.9]
 
 - try ... [17.1]
 
 - typeid ... [34.4]
 
 - typename ... [16.18], [16.19], [35.2], [35.3], [35.4], [35.12], [35.13]
 
 - using ... [23.9], [27.5]
 
 - virtual ... [16.24], [17.10], [20.7], [25.9]
 
 
 
- C++ Libraries FAQ ... [37.9]
 
- C++ to C conversion ... [38.13]
 
- C++2LaTeX (see Pretty printing) ... [40.3]
 
- C-Clearly (see Pretty printing) ... [40.3]
 
- Cache Misses
 
 
- Calling base-class member functions using :: ... [20.5]
 
- Calling member functions defined in my base class ... [20.5]
 
- Calling Virtuals During Initialization Idiom ... [23.6]
 
- Can randomly expose errors; Multi-threading and ... [16.2]
 
- Can't invent new operators (see also Operator overloading) ... [13.7]
 
- Can't replace behavior on built-in operators (see also Operator overloading) ... [13.6], [26.10]
 
- Car and Truck example ... [20.6]
 
- Car: Parking lot of Car vs. of Vehicle ... [21.3]
 
- Casting Derived** → Base**, evilness of ... [21.2]
 
- Casting Foo** → const Foo**, evilness of ... [18.17]
 
- Casting pointers, evilness of ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
- catch keyword ... [17.1]
 
- Catch-by-pointer, avoid (usually) (see also under Exceptions) ... [17.7], [17.8]
 
- Catch-by-value, avoid (see also under Exceptions) ... [17.7]
 
- catch ... [17]
 
 - Avoid catch-by-pointer (usually) ... [17.7], [17.8]
 
 - Avoid catch-by-value ... [17.7]
 
 - Avoiding an overabundance of try/catch blocks ... [17.13]
 
 - Broken mindset ... [17.12], [17.13]
 
 - Catch-by-pointer, avoid (usually) ... [17.7], [17.8]
 
 - Catch-by-value, avoid ... [17.7]
 
 - Compared to return-codes and if ... [17.1]
 
 - Constructors can throw exceptions ... [17.2]
 
 - Copy ctor must be publicly accessible ... [17.11]
 
 - Destructors ... [11.13], [17.3]
 
 - Eliminate some if statements ... [17.1]
 
 - Example of throw; to re-throw current exception ... [16.10], [17.5], [38.7], [38.8]
 
 - Example of try ... catch ... [16.10], [17.5], [38.7], [38.8]
 
 - Inherit your own exception classes (ultimately) from std::exception ... [17.6]
 
 - Member objects should be self-managing ... [17.4]
 
 - Mindset, right and wrong ... [17.12], [17.13]
 
 - Number of copies made internally ... [17.11]
 
 - Polymorphically throwing ... [17.10]
 
 - Publicly accessible copy constructor ... [17.11]
 
 - RAII (Resource Acquisition Is Initialization) ... [6.18], [17.12], [17.13]
 
 - RRID (Resource Reclamation Is Destruction) ... [6.18]
 
 - Stack unwinding ... [11.13], [17.3]
 
 - std::bad_alloc ... [16.6], [16.7]
 
 - std::runtime_error ... [17.6]
 
 - throw ... [16.6], [16.7]
 
 - throw; (without an exception-object after the throw keyword) ... [17.9]
 
 - Throwing polymorphically ... [17.10]
 
 - What to catch ... [17.7]
 
 - What to throw ... [17.6]
 
 - Wrong mindset ... [17.12], [17.13]
 
 
 
- Caveats, Serialization and ... [36.12]
 
- Ccdoc ... [40.1]
 
- ccdoc: a javadoc-like tool ... [40.1]
 
- Cfront C++ compiler ... [38.13]
 
- Chaining method calls ... [8.4], [10.18]
 
- Changes to this document ... [4]
 
- Changing the screen's colors ... [15.21]
 
- char* (use a string-like class instead), evilness of ... [13.6], [17.5]
 
- char: Defined ... [26.3], [26.4]
 
- char: Not necessarily the same as "character" ... [26.3]
 
- char: sizeof(char) is 1 ... [26.1]
 
- Character not necessarily the same as char ... [26.3], [26.4]
 
- Chinese (Mainland/GB encoding) translation of this document ... [2.4]
 
- Chinese (Taiwan/Big5 encoding) translation of this document ... [2.4]
 
- Choosing between integer sizes ... [29.5]
 
- Choosing member-functions vs. friend-functions ... [14.5]
 
- Choosing the best Serialization technique ... [36.2]
 
- Chopped copies ... [17.7], [17.10], [20.8], [22.5], [31.8], [34.4]
 
- Circles vs. Ellipses ... [21.6], [21.7], [21.8], [21.9], [21.10], [21.11]
 
- Circular dependencies ... [39.11]
 
- class keyword ... [7.1], [7.8]
 
- Class template is a family of classes (see also under Templates) ... [35.2], [35.12]
 
- Class templates ... [35.2], [35.12], [35.15]
 
- clear() and std::istream (input/output) ... [15.3]
 
- Clearing the screen ... [15.20]
 
- clone() methods ... [16.24], [20.8], [22.5]
 
- clrscr() ... [15.20]
 
- Code bloat ... [9.3]
 
- Code duplication, Avoiding ... [35.9]
 
- Coding standards (see also Operator overloading) ... [27.10]
 
- Coding standards concerning (Const correctness) ... [27.10]
 
- Coding standards ... [27]
 
 - Assignment operators check assignment-to-self ... [12.1], [27.10]
 
 - Assignment operators return *this ... [27.10]
 
 - Assignment operators use const ... [27.10]
 
 - Avoid arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Avoid bizarre syntax ... [27.14]
 
 - Avoid casting Derived** → Base** ... [21.2]
 
 - Avoid casting Foo** → const Foo** ... [18.17]
 
 - Avoid casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Avoid converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Avoid Derived** → Base**, Casting ... [21.2]
 
 - Avoid dynamically typed libraries ... [37.5]
 
 - Avoid explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Avoid explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Avoid Foo** → const Foo**, Casting ... [18.17]
 
 - Avoid hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Avoid hiding nested identifiers ... [39.8]
 
 - Avoid macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Avoid missing virtual on some base class dtors ... [20.7]
 
 - Avoid mixing malloc() and delete ... [16.3]
 
 - Avoid mixing new and free() ... [16.3]
 
 - Avoid mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Avoid mixing realloc() and new ... [16.5]
 
 - Avoid overabundance of try/catch blocks ... [17.13]
 
 - Avoid passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Avoid pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid preprocessor ... [29.8]
 
 - Avoid unnecessary global variables ... [33.2], [39.8]
 
 - Avoid zombie objects ... [17.2]
 
 - Bloodshed, Jihads, and Heat vs. Light ... [27.1]
 
 - Coding standards are never sufficient ... [27.2]
 
 - Coding standards are sometimes necessary ... [27.2]
 
 - const_cast ... [18.13]
 
 - Constructors should throw exceptions on failure ... [17.2]
 
 - Copy constructors use const ... [27.10]
 
 - Declare near first use ... [27.7]
 
 - Design classes from the outside-in ... [13.13]
 
 - Don't base C++ standards on C standards ... [27.3], [34.1]
 
 - Don't test for NULL after new ... [16.6]
 
 - Don't test for NULL before delete ... [16.8]
 
 - Explicitly calling destructors (don't!) ... [11.9]
 
 - Header filename extensions ... [27.9]
 
 - Identifier naming conventions ... [27.12]
 
 - Initialization lists ... [10.6], [26.8], [27.10]
 
 - Law of the Big Three ... [16.17], [27.10]
 
 - Macros that contain if ... [39.4]
 
 - Macros that contain multiple lines ... [39.5]
 
 - Macros that perform token pasting ... [39.6]
 
 - main() returns int, not void ... [5.8], [29.3]
 
 - Multiple inheritance ... [25.4]
 
 - Never throw exceptions from a dtor ... [17.3]
 
 - Operator overloading ... [27.10]
 
 - Prefer ++i over i++ ... [13.15]
 
 - Source filename extensions ... [27.8]
 
 - static at file-scope (don't!) ... [7.5]
 
 - The Ellemtel coding guidelines ... [27.13]
 
 - Todd Hoff's coding guidelines ... [27.13]
 
 - Use a std::string object rather than a char* ... [13.6], [17.5]
 
 - Use delete[] for arrays ... [16.12]
 
 - Use of the ternary ?: operator ... [27.6]
 
 - virtual destructors ... [20.7], [27.10]
 
 - Whitespace pseudo-standards ... [29.10]
 
 
 
- Coding-Standard books on C++ ... [27.1], [27.13]
 
- Colors: changing the screen's ... [15.21]
 
- Column-major order ... [13.11], [13.12]
 
- Combinations ... [5.3]
 
- Comma operator (see also Operator overloading) ... [13.9]
 
- Committee Draft (CD) for ANSI/ISO C++ ... [6.13]
 
- comp.lang.c++
 
 - Acronyms ... [5.1]
 
 - Don't answer FAQs ... [5.6]
 
 - Don't post job ads ... [5.10]
 
 - Don't post resumés ... [5.11]
 
 - FAQs for other newgroups ... [5.14]
 
 - How to handle off-topic postings ... [5.12]
 
 - How to post code ... [5.8]
 
 - Netiquette ... [5.4]
 
 - Not for homework problems ... [5.2]
 
 - Spam ... [5.13]
 
 - Subject: lines ... [5.7]
 
 - What if others ask FAQs ... [5.5]
 
 - What if others ask homework problems ... [5.3]
 
 - Which newsgroup to use ... [5.9]
 
 
 
- Compared to return-codes and if (see also under Exceptions) ... [17.1]
 
- Comparisons, floating point ... [29.17], [29.18]
 
- Compatibility, Binary ... [38.9]
 
- Compilation model, separate ... [35.12], [35.13], [35.14], [35.15]
 
- Compile-time (see also under Templates) ... [35.10]
 
- Compiler dependencies ... [38], [38.5]
 
- Compiler option -D ... [35.14]
 
- Compilers for C++ ... [38.5], [38.11], [38.13]
 
 - Free: Borland free C++ compiler ... [38.1]
 
 - Free: Digital Mars free C++ compiler ... [38.1]
 
 - Free: DJGPP free C++ compiler ... [38.1]
 
 - Free: Microsoft C++ freely downloadable command-line compiler ... [38.1]
 
 - Free: MinGW free C++ compiler ... [38.1]
 
 
 
- Composition
 
 - Benefits compared to freestore ... [31.4], [31.5]
 
 - Compared with private inheritance ... [24.2]
 
 - Criteria for composition vs. private inheritance ... [24.3]
 
 - Inlining virtual functions ... [31.5], [31.6]
 
 
 
- Concrete (Bitwise) state vs. Abstract (Meaningwise) state ... [18.10], [18.11]
 
- Conflicts; Reader/writer and writer/writer conflicts ... [36.12]
 
- Confusion increases cost ... [23.4]
 
- Conservative garbage collectors ... [16.27]
 
- Consistency is good, but not the greatest good ... [23.3]
 
- Const correctness ... [18], [18.1]
 
 - A form of type safety ... [18.2]
 
 - Aliasing of const and non-const pointers ... [18.15]
 
 - Basics ... [29.6]
 
 - Coding standards concerning ... [27.10]
 
 - const Fred& x vs. Fred const& x ... [18.8]
 
 - const member functions ... [18.10]
 
 - const-overloading ... [18.12]
 
 - const-reference returned from const member functions ... [18.11]
 
 - const_cast ... [18.13], [18.14]
 
 - Converting Foo** → const Foo**, evilness of ... [18.17]
 
 - Fred const& x vs. const Fred& x ... [18.8]
 
 - Fred const* x vs. const Fred* x ... [18.9]
 
 - Fred& const x is nonsense ... [18.7]
 
 - Immutable (const) pointers ... [18.5]
 
 - mutable ... [18.13]
 
 - Pointer-to-const ... [18.4], [18.5]
 
 - Pointer-to-const aliasing ... [18.16]
 
 - Prefer const vs. #define ... [29.7]
 
 - Reference-to-const ... [18.6]
 
 - Retrofitting const correctness is hard ... [18.3]
 
 
 
- const Fred& x vs. Fred const& x (Const correctness) ... [18.8]
 
- const keyword ... [13.9], [18.1]
 
- const member functions (Const correctness) ... [18.10]
 
- const pointers ... [18.4], [18.5], [18.16]
 
- const references ... [18.1], [18.6]
 
- const-overloading (Const correctness) ... [18.12]
 
- Const-overloading of the subscript operator, operator[] ... [18.12]
 
- const-overloading of the subscript operator, operator[] ... [13.9]
 
- const-reference returned from const member functions (Const correctness) ... [18.11]
 
- const_cast (Const correctness) ... [18.13], [18.14]
 
- const_cast keyword ... [18.13]
 
- Construct On First Use Idiom ... [10.13], [10.14], [10.15], [10.16], [26.9]
 
- Constructive operators should return by value (see also Operator overloading) ... [13.9]
 
- Constructive operators shouldn't change their operands (see also Operator overloading) ... [13.9]
 
- Constructors can throw exceptions (see also under Exceptions) ... [17.2]
 
- Constructors ... [10], [16.10]
 
 - Build objects from dust ... [10.1]
 
 - Calling a virtual from ... [10.7], [23.5]
 
 - Calling a virtual from; idiom ... [23.6]
 
 - Calling another constructor ... [10.3]
 
 - Coding standards re. copy constructor ... [27.10]
 
 - Copy, Should use const ... [27.10]
 
 - Default constructors ... [10.4], [10.5]
 
 - Init methods ... [10.3]
 
 - Initialization lists, Coding standard ... [10.6], [26.8], [27.10]
 
 - Initialization lists, Using this within ... [10.7]
 
 - Initialization of static data ... [10.12], [10.13], [10.15]
 
 - Member objects should be self-managing ... [17.4]
 
 - Named Constructor Idiom ... [10.8], [16.21], [16.24]
 
 - Order with inheritance ... [25.14]
 
 - Throwing exceptions ... [17.2]
 
 - Virtual Constructor Idiom ... [16.24], [17.10], [20.8], [22.5]
 
 
 
- Container of Thing vs. of Anything ... [21.3]
 
- Containers ... [34]
 
 - Container of Thing vs. of Anything ... [21.4]
 
 - Heterogeneous ... [34.4]
 
 - Iterators ... [34.5]
 
 
 
- Contiguous storage in std::vector<T> ... [34.3]
 
- Contracts on methods ... [21.11], [21.12]
 
- Conversions, invalid: Derived** → Base** pointers ... [21.2]
 
- Conversions, invalid: Foo** → const Foo** pointers ... [18.17]
 
- Conversions, invalid
 
 - Array-of-Derived → array-of-Base ... [21.4]
 
 
 
- Convert from string ... [39.2], [39.3]
 
- Convert to string; stringify() ... [35.8], [39.1], [39.3]
 
- Converting array-of-Derived → kind-of Array-of-Base, evilness of ... [21.4]
 
- Converting C++ to C ... [38.13]
 
- Converting Foo** → const Foo**, evilness of (Const correctness) ... [18.17]
 
- Copy constructors
 
 
- Copy ctor must be publicly accessible (see also under Exceptions) ... [17.11]
 
- Copy on write (see Reference counting) ... [16.23], [16.24]
 
- Copy on write in reference counting ... [16.23], [16.24]
 
- Copy semantics ... [31.1]
 
- Copying permissions ... [1], [1.3]
 
- Copyright notice ... [1.2]
 
- Corruption of heap: bang, you're dead ... [16.12], [30.3], [38.7], [38.8]
 
- Cost, schedule, risk ... [23.3]
 
- count ... [27.5]
 
- cout ... [27.5]
 
- Covariant Return Types ... [20.8]
 
- Crash at runtime without any warning ... [11.5], [11.6], [16.2], [16.3], [16.5], [16.12], [16.13], [17.5], [20.7], [21.1], [21.4], [21.5], [26.11], [34.1], [39.8]
 
- create() methods (see Named Constructor Idiom) ... [10.8], [16.21], [16.24]
 
- Creational pattern ... [36.8]
 
- Croatian translation of this document ... [2.3]
 
- Cross delegation with virtual inheritance ... [25.10]
 
- cstdio header ... [15.1]
 
- Ctor (see also Constructors) ... [10]
 
- Curley-braces: whitespace standards ... [29.10]
 
- Cursors: moving them on the screen ... [15.19]
 
- Cycles within graphs (definition), Serialization and ... [36.13]
 
- Cygwin ... [38.5]
 
"D"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Dangerous programming practices ... [6.15]
 
 - Arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Casting Derived** → Base** ... [21.2]
 
 - Casting Foo** → const Foo** ... [18.17]
 
 - Casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Derived** → Base**, Casting ... [21.2]
 
 - Explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Foo** → const Foo**, Casting ... [18.17]
 
 - Hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Missing virtual on some base class dtors ... [20.7]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Mixing realloc() and new ... [16.5]
 
 - Passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Preprocessor ... [29.8]
 
 - Unnecessary global variables ... [33.2], [39.8]
 
 
 
- Dangerous: pure technical definitions of "good" ... [6.17]
 
- Dangling else ... [39.4]
 
- Dangling pointer ... [12.2], [16.25]
 
- Death by heap corruption ... [16.12], [30.3], [38.7], [38.8]
 
- Death: dtor called at object's ... [11.1]
 
- Deciding which operators should be overloaded ... [13.8]
 
- Decision logic, avoiding ... [20.6]
 
- Decision-making
 
 - Business issues dominate technical issues ... [6.17]
 
 - Must optimize important things: schedule + cost + risk ... [23.3]
 
 - One size does not fit all ... [6.16], [6.17], [9.3], [18.8], [18.9], [19.8], [23.3], [25.2], [25.3], [29.7], [29.11], [36.2], [36.3], [36.5], [36.6]
 
 - Software development is ... [6.16], [9.3], [19.8], [19.9], [25.2], [25.3], [29.7], [29.11], [36.2], [36.3], [36.5], [36.6]
 
 
 
- Declaration: using-declaration ... [27.5]
 
- Declarations, forward ... [39.11]
 
 
- Declarations
 
 - Declare near first use ... [27.7]
 
 - Forward (see also under Templates) ... [39.14]
 
 - Function declarations ... [29.4]
 
 - List x(); declares a function, not an object ... [10.2]
 
 
 
- Decompiling executables back into C++ source code ... [38.4]
 
- Decrement operators operator-- (see also Operator overloading) ... [13.14], [13.15]
 
- Deducing template types ... [35.4]
 
- Deducing template types (see also under Templates) ... [35.4]
 
- Default code, non-abstract function is ... [20.6]
 
- Default code, non-pure virtual function is ... [20.6]
 
- Default constructors ... [10.4], [10.5], [10.19]
 
- Default parameters ... [10.3]
 
- define macros
 
 - Evil but sometimes useful ... [32.4], [33.5], [33.6]
 
 - Evil! ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Prefer const vs. #define ... [29.7]
 
 - See also Inline functions ... [9.1], [9.5], [28.2], [30.3], [32.4], [33.5], [33.6]
 
 - With if ... [39.4]
 
 - With multiple lines ... [39.5]
 
 - With token pasting ... [39.6]
 
 
 
- Definition (vs. declaration) ... [9.9]
 
- Definition of "evil" ... [6.15]
 
- Definition of "FAQ" ... [6.18]
 
- Definition of "good" must not be purely technical ... [6.17]
 
- Definition vs. declaration (see also under Templates) ... [35.12], [35.13], [35.14], [35.15]
 
- Definition vs. declaration of templates ... [35.12], [35.13], [35.14], [35.15]
 
- Deinitialization of a static member datum ... [10.14]
 
- Delegate to a sister class via virtual inheritance ... [25.10]
 
- delete keyword ... [13.10], [16.9], [16.11], [16.12], [16.14], [16.15], [38.7]
 
- delete ... [16], [16.1]
 
 - Allocating an array with new T[n] ... [16.11]
 
 - Automatically freed on program exit ... [10.14]
 
 - Automating a NULL test ... [16.7]
 
 - Breaking it into pools ... [11.14]
 
 - Corruption  bang, you're dead ... [16.12], [30.3], [38.7], [38.8]
 
 - delete and free() might use different heaps ... [16.9], [16.10]
 
 - delete handles NULL automatically ... [16.8]
 
 - delete has two steps ... [16.9]
 
 - delete p actually deletes *p, not p ... [16.1]
 
 - delete this ... [16.15]
 
 - delete[] uses magic ... [16.14], [38.7], [38.8]
 
 - delete[] vs. delete ... [16.12]
 
 - delete[] vs. delete for built-in types ... [16.13], [26.11]
 
 - Deleting an array with delete[] ... [16.11]
 
 - Difference between delete and delete[] ... [13.10], [16.3], [16.11]
 
 - Double-delete-disaster ... [16.2]
 
 - Garbage collectors ... [16.26], [16.27], [16.28]
 
 - Might use different heap from free() ... [16.9]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Mixing with malloc() ... [16.3]
 
 - Multi-dimensional arrays ... [16.16], [16.17]
 
 - new and malloc() might use different heaps ... [16.5]
 
 - new has two steps ... [16.10]
 
 - new never returns NULL ... [16.6]
 
 - Placement new ... [16.10]
 
 - Placement new doesn't allocate ... [11.10]
 
 - Prohibiting local objects ... [16.21]
 
 - realloc() ... [16.5]
 
 - Reference counting ... [16.22], [16.23], [16.24], [16.25]
 
 - Runtime costs of ... [31.2], [31.4], [31.5]
 
 - std::bad_alloc ... [16.6], [16.7]
 
 - std::set_new_handler ... [16.7]
 
 - Use std::auto_ptr only when pointing into the heap ... [23.6]
 
 - Why use new rather than malloc() ... [16.4]
 
 
 
- Demand-paged virtual-memory operating-systems ... [9.3]
 
- Dependent names (see also under Templates) ... [35.18], [35.19]
 
- Dereference operator: operator* ... [8.7], [13.9], [13.13], [16.22], [16.25]
 
- Dereference operator: operator-> ... [8.7], [16.22], [16.25]
 
- Derived classes ... [19.3]
 
 - Can access protected parts of Base ... [19.7]
 
 - Can't access private parts of Base ... [19.6]
 
 - Derived* → Base* conversion ... [19.4], [21.2]
 
 - Derived* → private Base* conversion (invalid) ... [24.4]
 
 - Derived** → Base** conversion (invalid) ... [21.2]
 
 
 
- Derived** → Base**, Casting, evilness of ... [21.2]
 
- Design books ... [28.8]
 
- Design patterns
 
 
- Design: Decision process must include business criteria ... [6.17]
 
- Destructors (see also under Exceptions) ... [11.13], [17.3]
 
- Destructors ... [11], [16.9], [16.14], [38.7], [38.8]
 
 - Base class subobjects are automagically destructed ... [11.12]
 
 - Calling a virtual from ... [23.5], [23.7]
 
 - Can't be overloaded ... [11.4]
 
 - Coding standards concerning ... [27.10]
 
 - Controlling lifetimes of locals ... [11.6], [11.7], [11.8]
 
 - Explicitly calling them (don't!) ... [11.5], [11.6], [11.9]
 
 - Explicitly calling them (sometimes okay) ... [11.10]
 
 - Last rites ... [11.1]
 
 - Member objects are automagically destructed ... [11.11]
 
 - Order of destruction for array elements ... [11.3]
 
 - Order of destruction for locals ... [11.2]
 
 - Order with inheritance ... [25.15]
 
 - Throwing an exception from (beware!) ... [11.13], [17.3]
 
 - virtual ... [11.12], [16.24], [20.8], [21.2], [33.10]
 
 - virtual destructor coding standard ... [20.7]
 
 
 
- Determining if inheritance is proper ... [21.12]
 
- Development of software is decision-making ... [6.16], [9.3], [19.8], [19.9], [25.2], [25.3], [29.7], [29.11], [36.2], [36.3], [36.5], [36.6]
 
- Diamond, dreaded ... [25.8]
 
- Dictionary of Algorithms and Data Structures ... [29.2]
 
- Digital Mars free C++ compiler ... [38.1]
 
- Dijkstra ... [5.3]
 
- Directive: using-directive ... [27.5]
 
- Directory separator: use "/", not "\" ... [15.16], [39.7]
 
- Disaster of double-delete ... [16.2]
 
- Disciplines ... [27]
 
 - Assignment operators check assignment-to-self ... [12.1], [27.10]
 
 - Assignment operators return *this ... [27.10]
 
 - Assignment operators use const ... [27.10]
 
 - Avoid arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Avoid bizarre syntax ... [27.14]
 
 - Avoid casting Derived** → Base** ... [21.2]
 
 - Avoid casting Foo** → const Foo** ... [18.17]
 
 - Avoid casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Avoid converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Avoid Derived** → Base**, Casting ... [21.2]
 
 - Avoid dynamically typed libraries ... [37.5]
 
 - Avoid explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Avoid explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Avoid Foo** → const Foo**, Casting ... [18.17]
 
 - Avoid hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Avoid hiding nested identifiers ... [39.8]
 
 - Avoid macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Avoid missing virtual on some base class dtors ... [20.7]
 
 - Avoid mixing malloc() and delete ... [16.3]
 
 - Avoid mixing new and free() ... [16.3]
 
 - Avoid mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Avoid mixing realloc() and new ... [16.5]
 
 - Avoid overabundance of try/catch blocks ... [17.13]
 
 - Avoid passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Avoid pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid preprocessor ... [29.8]
 
 - Avoid unnecessary global variables ... [33.2], [39.8]
 
 - Avoid zombie objects ... [17.2]
 
 - Bloodshed, Jihads, and Heat vs. Light ... [27.1]
 
 - Coding standards are never sufficient ... [27.2]
 
 - Coding standards are sometimes necessary ... [27.2]
 
 - const_cast ... [18.13]
 
 - Constructors should throw exceptions on failure ... [17.2]
 
 - Copy constructors use const ... [27.10]
 
 - Declare near first use ... [27.7]
 
 - Design classes from the outside-in ... [13.13]
 
 - Don't base C++ standards on C standards ... [27.3], [34.1]
 
 - Don't test for NULL after new ... [16.6]
 
 - Don't test for NULL before delete ... [16.8]
 
 - Explicitly calling destructors (don't!) ... [11.9]
 
 - Header filename extensions ... [27.9]
 
 - Identifier naming conventions ... [27.12]
 
 - Initialization lists ... [10.6], [26.8], [27.10]
 
 - Law of the Big Three ... [16.17], [27.10]
 
 - Macros that contain if ... [39.4]
 
 - Macros that contain multiple lines ... [39.5]
 
 - Macros that perform token pasting ... [39.6]
 
 - main() returns int, not void ... [5.8], [29.3]
 
 - Multiple inheritance ... [25.4]
 
 - Never throw exceptions from a dtor ... [17.3]
 
 - Operator overloading ... [27.10]
 
 - Prefer ++i over i++ ... [13.15]
 
 - Source filename extensions ... [27.8]
 
 - static at file-scope (don't!) ... [7.5]
 
 - The Ellemtel coding guidelines ... [27.13]
 
 - Todd Hoff's coding guidelines ... [27.13]
 
 - Use a std::string object rather than a char* ... [13.6], [17.5]
 
 - Use delete[] for arrays ... [16.12]
 
 - Use of the ternary ?: operator ... [27.6]
 
 - virtual destructors ... [20.7], [27.10]
 
 - Whitespace pseudo-standards ... [29.10]
 
 
 
- DJGPP free C++ compiler ... [38.1]
 
- Doc++ ... [40.1]
 
- doc++: a javadoc-like tool ... [40.1]
 
- Doctrine of Least Surprise (see also Operator overloading) ... [13.9]
 
- Documentation generated by tools, HTML ... [40.1]
 
- Does help the users of a class (see also Operator overloading) ... [13.2]
 
- Does not help the developer of a class (see also Operator overloading) ... [13.4]
 
- Dominate: Business criteria dominate technical criteria ... [6.5]
 
- DOS
 
 - Binary mode for opening streams ... [15.12]
 
 - Binary mode for std::cin and std::cout ... [15.13]
 
 - Newsgroups specializing in ... [5.9]
 
 - OS-specific questions/answers ... [40.5]
 
 
 
- Double-delete-disaster ... [16.2]
 
- Double-precision arithmetic ... [29.17], [29.18]
 
- Downloading
 
 - HTML version of this document ... [2.1]
 
 
 
- Downloads, free
 
 - Bjarne Stroustrup's web site ... [29.4]
 
 - Borland free C++ compiler ... [38.1]
 
 - British Informatics Olympiad ... [29.2]
 
 - C++ Libraries FAQ ... [37.9]
 
 - Ccdoc ... [40.1]
 
 - Cfront C++ compiler ... [38.13]
 
 - Cygwin ... [38.5]
 
 - Dictionary of Algorithms and Data Structures ... [29.2]
 
 - Digital Mars free C++ compiler ... [38.1]
 
 - DJGPP free C++ compiler ... [38.1]
 
 - Doc++ ... [40.1]
 
 - Doxygen ... [40.1]
 
 - Garbage collectors ... [16.27], [16.28]
 
 - Grammar for C++ ... [38.11]
 
 - Industrial Strength C++ ... [27.13]
 
 - International Obfuscated C Coding Contest ... [27.14]
 
 - Lgrind ... [40.3]
 
 - LLVM C++ compiler ... [38.13]
 
 - Microsoft C++ freely downloadable command-line compiler ... [38.1]
 
 - MinGW ... [38.5]
 
 - MinGW free C++ compiler ... [38.1]
 
 - On floating point arithmetic ... [29.17]
 
 - PERCEPS ... [40.1]
 
 - STL Error-Message filter ... [35.17]
 
 - Techi-Warehouse ... [5.9]
 
 - The Correct C++ Tutorial ... [29.21]
 
 - University of Valladolid Programming Contest Site ... [29.2]
 
 
 
- Doxygen ... [40.1]
 
- doxygen: a javadoc-like tool ... [40.1]
 
- Dreaded diamond ... [25.8]
 
- Dtor (see also Destructors) ... [11]
 
- Dubious programming practices ... [6.15]
 
 - Arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Casting Derived** → Base** ... [21.2]
 
 - Casting Foo** → const Foo** ... [18.17]
 
 - Casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Derived** → Base**, Casting ... [21.2]
 
 - Explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Foo** → const Foo**, Casting ... [18.17]
 
 - Hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Missing virtual on some base class dtors ... [20.7]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Mixing realloc() and new ... [16.5]
 
 - Passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Preprocessor ... [29.8]
 
 - Unnecessary global variables ... [33.2], [39.8]
 
 
 
- Duplication of code, Avoiding ... [35.9]
 
- Dust ... [10.1]
 
- Dynamic Binding During Initialization Idiom ... [23.6]
 
- Dynamic
 
 
"E"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Early Lifecycle Decisions ... [6]
 
 - Business-centricity vs. Techno-centricity ... [6.5]
 
 - C++ is a practical tool ... [6.1]
 
 - C++ is not a perfect tool ... [6.2]
 
 - Length of time needed to learn OO/C++ ... [6.7]
 
 - Size of the installed base ... [6.6]
 
 - Some advantages of Generic Programming ... [6.4]
 
 - Some advantages of OO ... [6.3]
 
 - Standardization of C++ ... [6.12], [6.13]
 
 
 
- Echo: turning off keyboard "echo" ... [15.18]
 
- Eight bits: minimum size for a byte ... [26.4]
 
- Elements of arrays init'd via the default ctor ... [10.5]
 
- Eliminate some if statements (see also under Exceptions) ... [17.1]
 
- Ellemtel coding guidelines ... [27.13]
 
- Ellipses vs. Circles ... [21.6], [21.7], [21.8], [21.9], [21.10], [21.11]
 
- Else, Dangling ... [39.4]
 
- Encapsulation ... [6.8], [7]
 
 - Allows changes to internal data structure ... [13.12]
 
 - Definition ... [7.4]
 
 - Hides stuff from code, not from people ... [7.6]
 
 - Improved(!) by friends ... [14.2]
 
 - Not necessarily violated by friends ... [14.2]
 
 - Security vs. Encapsulation ... [7.7]
 
 
 
- End-of-file (see Input/output) ... [15.2], [15.5]
 
- End-of-line translations in text mode ... [15.12], [15.13]
 
- Ending lines: std::endl vs. '\n' (input/output) ... [15.7]
 
- Ending output lines: std::endl vs. '\n' ... [15.7]
 
- endl vs. '\n' for ending output lines ... [15.7]
 
- Enumerations ... [29.19]
 
 
- eof and std::istream (input/output) ... [15.2], [15.5]
 
- Equality test operator: operator== ... [13.9], [13.13]
 
- Equation parsing in C++ ... [5.3]
 
- Erasing the screen ... [15.20]
 
- Error codes
 
 - Avoiding using the return-code-mindset with real exceptions ... [17.13]
 
 - Can't be used from constructors ... [17.2]
 
 - Using try / catch / throw instead ... [17.1]
 
 
 
- Error messages, Understanding ... [35.17]
 
- Etiquette ... [5]
 
- Etymology ... [6.18]
 
- Evil things ... [6.15]
 
 - Arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Casting Derived** → Base** ... [21.2]
 
 - Casting Foo** → const Foo** ... [18.17]
 
 - Casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Choose the "lesser of two evils" ... [29.8]
 
 - Converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Definition of "evil" ... [6.15]
 
 - Derived** → Base**, Casting ... [21.2]
 
 - Does not mean "never use these"! ... [6.16]
 
 - Explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Foo** → const Foo**, Casting ... [18.17]
 
 - friend classes/functions are not evil ... [15.9]
 
 - Hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Missing virtual on some base class dtors ... [20.7]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Mixing realloc() and new ... [16.5]
 
 - Multiple inheritance is not evil ... [25.2]
 
 - Passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Preprocessor ... [29.8]
 
 - private inheritance is not evil ... [24.3]
 
 - protected data is not evil ... [19.8]
 
 - Sometimes "evil" things are the "least bad" alternative ... [6.16]
 
 - Sometimes "evil" things are useful ... [29.11]
 
 - Unnecessary global variables ... [33.2], [39.8]
 
 
 
- Example of throw; to re-throw current exception (see also under Exceptions) ... [16.10], [17.5], [38.7], [38.8]
 
- Example of try ... catch (see also under Exceptions) ... [16.10], [17.5], [38.7], [38.8]
 
- Examples (see also Operator overloading) ... [13.3]
 
- Exceptions ... [17]
 
 - Avoid catch-by-pointer (usually) ... [17.7], [17.8]
 
 - Avoid catch-by-value ... [17.7]
 
 - Avoiding an overabundance of try/catch blocks ... [17.13]
 
 - Broken mindset ... [17.12], [17.13]
 
 - Catch-by-pointer, avoid (usually) ... [17.7], [17.8]
 
 - Catch-by-value, avoid ... [17.7]
 
 - Compared to return-codes and if ... [17.1]
 
 - Constructors can throw exceptions ... [17.2]
 
 - Copy ctor must be publicly accessible ... [17.11]
 
 - Destructors ... [11.13], [17.3]
 
 - Eliminate some if statements ... [17.1]
 
 - Example of throw; to re-throw current exception ... [16.10], [17.5], [38.7], [38.8]
 
 - Example of try ... catch ... [16.10], [17.5], [38.7], [38.8]
 
 - Inherit your own exception classes (ultimately) from std::exception ... [17.6]
 
 - Member objects should be self-managing ... [17.4]
 
 - Mindset, right and wrong ... [17.12], [17.13]
 
 - Number of copies made internally ... [17.11]
 
 - Polymorphically throwing ... [17.10]
 
 - Publicly accessible copy constructor ... [17.11]
 
 - RAII (Resource Acquisition Is Initialization) ... [6.18], [17.12], [17.13]
 
 - RRID (Resource Reclamation Is Destruction) ... [6.18]
 
 - Stack unwinding ... [11.13], [17.3]
 
 - std::bad_alloc ... [16.6], [16.7]
 
 - std::runtime_error ... [17.6]
 
 - throw ... [16.6], [16.7]
 
 - throw; (without an exception-object after the throw keyword) ... [17.9]
 
 - Throwing polymorphically ... [17.10]
 
 - What to catch ... [17.7]
 
 - What to throw ... [17.6]
 
 - Wrong mindset ... [17.12], [17.13]
 
 
 
- Executables
 
 - Decompiling back to C++ source code ... [38.4]
 
 - inline functions and size ... [9.3]
 
 - Size ... [37.8]
 
 
 
- explicit keyword ... [13.9], [20.7]
 
- Explicitly calling destructors (sometimes okay), evilness of ... [11.10]
 
- Explicitly calling destructors on local objects, evilness of ... [11.5], [11.6]
 
- Exploits developer's intuition (see also Operator overloading) ... [6.8]
 
- export keyword ... [35.14]
 
- export keyword (see also under Templates) ... [35.14]
 
- extern "C" ... [32], [32.3]
 
- extern keyword ... [32], [32.3]
 
- External resources
 
 - Bjarne Stroustrup's web site ... [29.4]
 
 - Borland free C++ compiler ... [38.1]
 
 - British Informatics Olympiad ... [29.2]
 
 - C++ Libraries FAQ ... [37.9]
 
 - Ccdoc ... [40.1]
 
 - Cfront C++ compiler ... [38.13]
 
 - Cygwin ... [38.5]
 
 - Dictionary of Algorithms and Data Structures ... [29.2]
 
 - Digital Mars free C++ compiler ... [38.1]
 
 - DJGPP free C++ compiler ... [38.1]
 
 - Doc++ ... [40.1]
 
 - Doxygen ... [40.1]
 
 - Garbage collectors ... [16.27], [16.28]
 
 - Grammar for C++ ... [38.11]
 
 - Industrial Strength C++ ... [27.13]
 
 - International Obfuscated C Coding Contest ... [27.14]
 
 - Lgrind ... [40.3]
 
 - LLVM C++ compiler ... [38.13]
 
 - Microsoft C++ freely downloadable command-line compiler ... [38.1]
 
 - MinGW ... [38.5]
 
 - MinGW free C++ compiler ... [38.1]
 
 - On floating point arithmetic ... [29.17]
 
 - PERCEPS ... [40.1]
 
 - STL Error-Message filter ... [35.17]
 
 - Techi-Warehouse ... [5.9]
 
 - The Correct C++ Tutorial ... [29.21]
 
 - University of Valladolid Programming Contest Site ... [29.2]
 
 
 
"F"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- FAQs
 
 - Definition ... [6.18]
 
 - Don't answer them ... [5.6]
 
 - What if others ask them ... [5.5]
 
 
 
- Features of C++ from a business perspective ... [6.8]
 
- File I/O; translations of end-of-line sequences ... [15.12], [15.13]
 
- Filenames
 
 - Extensions for header files ... [27.9]
 
 - Extensions for source code files ... [27.8]
 
 - Using "/" rather than "\" for directories ... [15.16], [39.7]
 
 
 
- Final classes ... [23.11]
 
- Final methods ... [23.12]
 
- find_if ... [37.3]
 
- Fine-point markers ... [6.16]
 
- First operand: friend-functions allow promotion of ... [14.5]
 
- Fit; One size does not fit all ... [6.16], [6.17], [9.3], [18.8], [18.9], [19.8], [23.3], [25.2], [25.3], [29.7], [29.11], [36.2], [36.3], [36.5], [36.6]
 
- Floating point
 
 
- FOO machine (hypothetical) ... [26.6]
 
- Foo** → const Foo**, Casting, evilness of ... [18.17]
 
- for keyword ... [39.8]
 
- for loop ... [39.8]
 
- Format for serialization: human-readable vs. non-human-readable ... [36.3]
 
- Format, Binary-format for serialization ... [36.6]
 
- Format, Text-format for serialization ... [36.5]
 
- FORTRAN vs. C++ ... [6.5]
 
- Forward declarations (see also under Templates) ... [39.14]
 
- Forward declarations ... [39.11]
 
 
- Four-letter words, "Think" is not ... [6.16], [6.17], [18.9]
 
- Frameworks ... [17.8]
 
- Fred const& x vs. const Fred& x (Const correctness) ... [18.8]
 
- Fred const* x vs. const Fred* x (Const correctness) ... [18.9]
 
- Fred& const x is nonsense (Const correctness) ... [18.7]
 
- Free C++ compilers
 
 - Borland free C++ compiler ... [38.1]
 
 - Digital Mars free C++ compiler ... [38.1]
 
 - DJGPP free C++ compiler ... [38.1]
 
 - Microsoft C++ freely downloadable command-line compiler ... [38.1]
 
 - MinGW free C++ compiler ... [38.1]
 
 
 
- Free downloads
 
 - Bjarne Stroustrup's web site ... [29.4]
 
 - Borland free C++ compiler ... [38.1]
 
 - British Informatics Olympiad ... [29.2]
 
 - C++ Libraries FAQ ... [37.9]
 
 - Ccdoc ... [40.1]
 
 - Cfront C++ compiler ... [38.13]
 
 - Cygwin ... [38.5]
 
 - Dictionary of Algorithms and Data Structures ... [29.2]
 
 - Digital Mars free C++ compiler ... [38.1]
 
 - DJGPP free C++ compiler ... [38.1]
 
 - Doc++ ... [40.1]
 
 - Doxygen ... [40.1]
 
 - Garbage collectors ... [16.27], [16.28]
 
 - Grammar for C++ ... [38.11]
 
 - Industrial Strength C++ ... [27.13]
 
 - International Obfuscated C Coding Contest ... [27.14]
 
 - Lgrind ... [40.3]
 
 - LLVM C++ compiler ... [38.13]
 
 - Microsoft C++ freely downloadable command-line compiler ... [38.1]
 
 - MinGW ... [38.5]
 
 - MinGW free C++ compiler ... [38.1]
 
 - On floating point arithmetic ... [29.17]
 
 - PERCEPS ... [40.1]
 
 - STL Error-Message filter ... [35.17]
 
 - Techi-Warehouse ... [5.9]
 
 - The Correct C++ Tutorial ... [29.21]
 
 - University of Valladolid Programming Contest Site ... [29.2]
 
 
 
- free() ... [16], [16.3]
 
 - Allocating an array with new T[n] ... [16.11]
 
 - Automatically freed on program exit ... [10.14]
 
 - Automating a NULL test ... [16.7]
 
 - Breaking it into pools ... [11.14]
 
 - Corruption  bang, you're dead ... [16.12], [30.3], [38.7], [38.8]
 
 - delete and free() might use different heaps ... [16.9], [16.10]
 
 - delete handles NULL automatically ... [16.8]
 
 - delete has two steps ... [16.9]
 
 - delete this ... [16.15]
 
 - delete[] uses magic ... [16.14], [38.7], [38.8]
 
 - delete[] vs. delete ... [16.12]
 
 - delete[] vs. delete for built-in types ... [16.13], [26.11]
 
 - Deleting an array with delete[] ... [16.11]
 
 - Difference between delete and delete[] ... [13.10], [16.3], [16.11]
 
 - Garbage collectors ... [16.26], [16.27], [16.28]
 
 - Might use different heap from delete ... [16.9]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Multi-dimensional arrays ... [16.16], [16.17]
 
 - new and malloc() might use different heaps ... [16.5]
 
 - new has two steps ... [16.10]
 
 - new never returns NULL ... [16.6]
 
 - Placement new ... [16.10]
 
 - Placement new doesn't allocate ... [11.10]
 
 - Prohibiting local objects ... [16.21]
 
 - realloc() ... [16.5]
 
 - Reference counting ... [16.22], [16.23], [16.24], [16.25]
 
 - Runtime costs of ... [31.2], [31.4], [31.5]
 
 - std::bad_alloc ... [16.6], [16.7]
 
 - std::set_new_handler ... [16.7]
 
 - Use std::auto_ptr only when pointing into the heap ... [23.6]
 
 - Why use new rather than malloc() ... [16.4]
 
 
 
- Freestore ... [16]
 
 - Allocating an array with new T[n] ... [16.11]
 
 - Automatically freed on program exit ... [10.14]
 
 - Automating a NULL test ... [16.7]
 
 - Breaking it into pools ... [11.14]
 
 - Corruption  bang, you're dead ... [16.12], [30.3], [38.7], [38.8]
 
 - delete and free() might use different heaps ... [16.9], [16.10]
 
 - delete handles NULL automatically ... [16.8]
 
 - delete has two steps ... [16.9]
 
 - delete this ... [16.15]
 
 - delete[] uses magic ... [16.14], [38.7], [38.8]
 
 - delete[] vs. delete ... [16.12]
 
 - delete[] vs. delete for built-in types ... [16.13], [26.11]
 
 - Deleting an array with delete[] ... [16.11]
 
 - Difference between delete and delete[] ... [13.10], [16.3], [16.11]
 
 - Garbage collectors ... [16.26], [16.27], [16.28]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Multi-dimensional arrays ... [16.16], [16.17]
 
 - new and malloc() might use different heaps ... [16.5]
 
 - new has two steps ... [16.10]
 
 - new never returns NULL ... [16.6]
 
 - Placement new ... [16.10]
 
 - Placement new doesn't allocate ... [11.10]
 
 - Prohibiting local objects ... [16.21]
 
 - realloc() ... [16.5]
 
 - Reference counting ... [16.22], [16.23], [16.24], [16.25]
 
 - Runtime costs of ... [31.2], [31.4], [31.5]
 
 - std::bad_alloc ... [16.6], [16.7]
 
 - std::set_new_handler ... [16.7]
 
 - Use std::auto_ptr only when pointing into the heap ... [23.6]
 
 - Why use new rather than malloc() ... [16.4]
 
 
 
- French translation of this document ... [2.5]
 
- Frequently-asked-questions
 
 - Definition ... [6.18]
 
 - Don't answer them ... [5.6]
 
 - What if others ask them ... [5.5]
 
 
 
- Friend functions (see also under Templates) ... [35.16]
 
- Friends ... [14]
 
 - Are not evil ... [15.9]
 
 - Choosing between members and friends ... [14.5]
 
 - Definition of friend ... [14.1]
 
 - friend doesn't necessarily violate encapsulation ... [14.2]
 
 - Friendship privileges aren't inherited ... [14.4]
 
 - Friendship privileges aren't reciprocal ... [14.4]
 
 - Friendship privileges aren't transitive ... [14.4]
 
 - Pros and cons of friends ... [14.3]
 
 - std::istream operator>> ... [15.10]
 
 - std::ostream operator<< ... [15.8], [15.9]
 
 - std::ostream operator<< (virtual) ... [15.11]
 
 - Templates functions, issues ... [35.16]
 
 - Virtual Friend Function Idiom ... [14.3], [15.11]
 
 
 
- from-string conversion ... [39.2], [39.3]
 
- From: line of a posting (see also Netiquette) ... [5.4]
 
- Fruit: Bag of Apple vs. of Fruit ... [21.3]
 
- FTP sites
 
 
- Fully-qualified calls to base-class member functions ... [20.5]
 
- Funcall operator: operator() ... [13.10], [13.11], [13.12], [16.17], [16.18], [16.19]
 
- Function declarations ... [10.2]
 
- Function overloading and (see also under Templates) ... [35.11]
 
- Function pointer, Member ... [33]
 
 - Address of a C++ method ... [33.4]
 
 - Array of pointer-to-member ... [33.6]
 
 - Can't convert to void* ... [33.7]
 
 - Contrast to pointer-to-function ... [33.1]
 
 - Converting to pointer-to-function ... [33.2], [33.3]
 
 - Passing as pointer-to-function ... [33.2]
 
 
 
- Function pointer
 
 - Can't convert to void* ... [33.8]
 
 - Contrast pointer-to-member-function ... [33.1]
 
 - Converting from pointer-to-member-function ... [33.3]
 
 - Functionoids and... ... [33.10]
 
 - Members ... [33]
 
 - Sometimes you declare them unintentionally ... [10.19]
 
 - Weaknesses compared to functionoids ... [33.10]
 
 
 
- Function template is a family of functions (see also under Templates) ... [35.3], [35.4], [35.12]
 
- Function templates ... [35.3], [35.4], [35.7], [35.8], [35.9], [35.12], [35.13], [35.14]
 
- Functionoids ... [33.9]
 
 
- Functions, inline ... [9]
 
 - Better than #define macros ... [9.5]
 
 - Can make executables larger ... [9.3]
 
 - Can make executables smaller(!) ... [9.3]
 
 - Can make performance better ... [9.3]
 
 - Can make performance worse(!) ... [9.3]
 
 - Can make thrashing happen ... [9.3]
 
 - Can make thrashing not happen(!) ... [9.3]
 
 - Can make zero speed-difference(!) ... [9.3]
 
 - Defined outside class body ... [9.7]
 
 - Defined within class body ... [9.8]
 
 - Forward declarations ... [39.13]
 
 - Functionoids ... [33.11]
 
 - Inlining virtual functions ... [31.5], [31.6]
 
 - Like a #define macro ... [9.1]
 
 - Member functions ... [9.7]
 
 - Non-member functions ... [9.6]
 
 - Procedural integration ... [9.2]
 
 - Safety without loss of speed ... [6.8], [9.4]
 
 
 
- Functions: inline allows safety with speed ... [9.4]
 
- Functions: procedural integration via inline ... [9.2]
 
- FWIW (Acronym) ... [5.1]
 
- FYI (Acronym) ... [5.1]
 
"G"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Garbage collector ... [16.26]
 
 
- Garbage collectors ... [16.27], [16.28]
 
- Gas powered engine (example) ... [25.5]
 
- Generalization (see also Inheritance) ... [19.3]
 
- Generalization, Nested ... [25.5]
 
- Generalized pointers: Handles ... [8.7]
 
- Generic programming: So what? ... [6.4]
 
- Genericity (see also Templates) ... [35.6]
 
- Genericity (see also under Templates) ... [35.6]
 
- getch() ... [15.17]
 
- Global variables: Just Say No! ... [33.2], [39.8]
 
- GNU indent (see Pretty printing) ... [40.3]
 
- GNU
 
 
- Good of the many outweighs the good of the few ... [23.3]
 
- Good, Must not be defined in purely technical terms ... [6.17]
 
- Grammar for C++ ... [38.11]
 
- Grammar for C++, Yaccable ... [38.11]
 
- Graphics ... [5.9]
 
- Graphs of objects (definition), Serialization and ... [36.13]
 
- Greater-than operator: operator> ... [13.9]
 
- Greater-than-or-equal-to operator: operator>= ... [13.9]
 
- Greek translation of this document ... [2.6]
 
- grind (see Pretty printing) ... [40.3]
 
- Guidelines for when and how (see also Operator overloading) ... [13.9]
 
- Guidelines ... [27]
 
 - Assignment operators check assignment-to-self ... [12.1], [27.10]
 
 - Assignment operators return *this ... [27.10]
 
 - Assignment operators use const ... [27.10]
 
 - Avoid arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Avoid bizarre syntax ... [27.14]
 
 - Avoid casting Derived** → Base** ... [21.2]
 
 - Avoid casting Foo** → const Foo** ... [18.17]
 
 - Avoid casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Avoid converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Avoid Derived** → Base**, Casting ... [21.2]
 
 - Avoid dynamically typed libraries ... [37.5]
 
 - Avoid explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Avoid explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Avoid Foo** → const Foo**, Casting ... [18.17]
 
 - Avoid hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Avoid hiding nested identifiers ... [39.8]
 
 - Avoid macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Avoid missing virtual on some base class dtors ... [20.7]
 
 - Avoid mixing malloc() and delete ... [16.3]
 
 - Avoid mixing new and free() ... [16.3]
 
 - Avoid mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Avoid mixing realloc() and new ... [16.5]
 
 - Avoid overabundance of try/catch blocks ... [17.13]
 
 - Avoid passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Avoid pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid preprocessor ... [29.8]
 
 - Avoid unnecessary global variables ... [33.2], [39.8]
 
 - Avoid zombie objects ... [17.2]
 
 - Bloodshed, Jihads, and Heat vs. Light ... [27.1]
 
 - Coding standards are never sufficient ... [27.2]
 
 - Coding standards are sometimes necessary ... [27.2]
 
 - const_cast ... [18.13]
 
 - Constructors should throw exceptions on failure ... [17.2]
 
 - Copy constructors use const ... [27.10]
 
 - Declare near first use ... [27.7]
 
 - Design classes from the outside-in ... [13.13]
 
 - Don't base C++ standards on C standards ... [27.3], [34.1]
 
 - Don't test for NULL after new ... [16.6]
 
 - Don't test for NULL before delete ... [16.8]
 
 - Explicitly calling destructors (don't!) ... [11.9]
 
 - Header filename extensions ... [27.9]
 
 - Identifier naming conventions ... [27.12]
 
 - Initialization lists ... [10.6], [26.8], [27.10]
 
 - Law of the Big Three ... [16.17], [27.10]
 
 - Macros that contain if ... [39.4]
 
 - Macros that contain multiple lines ... [39.5]
 
 - Macros that perform token pasting ... [39.6]
 
 - main() returns int, not void ... [5.8], [29.3]
 
 - Multiple inheritance ... [25.4]
 
 - Never throw exceptions from a dtor ... [17.3]
 
 - Operator overloading ... [27.10]
 
 - Prefer ++i over i++ ... [13.15]
 
 - Source filename extensions ... [27.8]
 
 - static at file-scope (don't!) ... [7.5]
 
 - The Ellemtel coding guidelines ... [27.13]
 
 - Todd Hoff's coding guidelines ... [27.13]
 
 - Use a std::string object rather than a char* ... [13.6], [17.5]
 
 - Use delete[] for arrays ... [16.12]
 
 - Use of the ternary ?: operator ... [27.6]
 
 - virtual destructors ... [20.7], [27.10]
 
 - vs. rules ... [6.16], [6.17], [9.3], [18.8], [18.9], [19.8], [23.3], [25.2], [25.3], [29.7], [29.11], [36.2], [36.3], [36.5], [36.6]
 
 - Whitespace pseudo-standards ... [29.10]
 
 
 
"H"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- HAND (Acronym) ... [5.1]
 
- Handles as generalized pointers ... [8.7]
 
- Hardware, floating point ... [29.18]
 
- Has-a (see also Composition) ... [19.2], [24.2]
 
- Header files
 
 
- Heap-sort ... [5.3]
 
- Heap ... [16]
 
 - Allocating an array with new T[n] ... [16.11]
 
 - Automatically freed on program exit ... [10.14]
 
 - Automating a NULL test ... [16.7]
 
 - Breaking it into pools ... [11.14]
 
 - Corruption  bang, you're dead ... [16.12], [30.3], [38.7], [38.8]
 
 - delete and free() might use different heaps ... [16.9], [16.10]
 
 - delete handles NULL automatically ... [16.8]
 
 - delete has two steps ... [16.9]
 
 - delete this ... [16.15]
 
 - delete[] uses magic ... [16.14], [38.7], [38.8]
 
 - delete[] vs. delete ... [16.12]
 
 - delete[] vs. delete for built-in types ... [16.13], [26.11]
 
 - Deleting an array with delete[] ... [16.11]
 
 - Difference between delete and delete[] ... [13.10], [16.3], [16.11]
 
 - Garbage collectors ... [16.26], [16.27], [16.28]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Multi-dimensional arrays ... [16.16], [16.17]
 
 - new and malloc() might use different heaps ... [16.5]
 
 - new has two steps ... [16.10]
 
 - new never returns NULL ... [16.6]
 
 - Placement new ... [16.10]
 
 - Placement new doesn't allocate ... [11.10]
 
 - Prohibiting local objects ... [16.21]
 
 - realloc() ... [16.5]
 
 - Reference counting ... [16.22], [16.23], [16.24], [16.25]
 
 - Runtime costs of ... [31.2], [31.4], [31.5]
 
 - std::bad_alloc ... [16.6], [16.7]
 
 - std::set_new_handler ... [16.7]
 
 - Use std::auto_ptr only when pointing into the heap ... [23.6]
 
 - Why use new rather than malloc() ... [16.4]
 
 
 
- Heat vs. light ... [27.1]
 
- Heterogeneous containers ... [34.4]
 
- Hiding inherited public features, evilness of ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
- Hiding rule ... [23.9]
 
- Homework problems ... [5.2], [5.3]
 
- Homogeneous containers ... [34.4]
 
- Hostility ... [32.10]
 
- How to learn OO/C++ ... [28]
 
- HPS Beauty (see Pretty printing) ... [40.3]
 
- HR (see Human Resources) ... [6.14]
 
- HTML documentation: tools that generate ... [40.1]
 
- HTML postings: don't! ... [5.4]
 
- Human Resources: questions to ask in an interview ... [6.14]
 
- Human-readable format mechanics, Serialization and ... [36.5]
 
- Human-readable format tradeoffs, Serialization and ... [36.3]
 
- Hybrid garbage collectors ... [16.27]
 
- Hybrid OO programming languages ... [28.3]
 
- Hype ... [6.3], [6.4]
 
- Hypothetical FOO machine ... [26.6]
 
"I"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- I/O; translations of end-of-line sequences ... [15.12], [15.13]
 
- Identity of an object ... [36.11]
 
- Idioms
 
 
- if (std::cin >> foo) and std::istream (input/output) ... [39.2], [39.3]
 
- if (std::cout << foo) and std::istream (input/output) ... [39.1]
 
- if keyword ... [17.1]
 
- if
 
 - Avoiding decision logic via virtual functions ... [20.6]
 
 - Some are eliminated by try / catch / throw ... [17.1]
 
 - Unnecessary ifs increase bugs, cost, time-to-market ... [17.1]
 
 - Within macros ... [39.4]
 
 
 
- ignore() and std::istream (input/output) ... [15.3]
 
- IMAO (Acronym) ... [5.1]
 
- IMHO (Acronym) ... [5.1]
 
- Immutable (const) pointers ... [18.5]
 
- Immutable (const) pointers (Const correctness) ... [18.5]
 
- IMNSHO (Acronym) ... [5.1]
 
- IMO (Acronym) ... [5.1]
 
- Imperfect programming languages ... [6.2]
 
- Improper inheritance: behavior, not just interface ... [21.12]
 
- include
 
 
- Increment operator: operator++ ... [13.9], [13.13]
 
- Increment operators operator++ (see also Operator overloading) ... [13.14], [13.15]
 
- indent (see Pretty printing) ... [40.3]
 
- Indirection, Extra layers of ... [31.5]
 
- Industrial Strength C++ ... [27.13]
 
- Inequality test operator: operator!= ... [13.9], [13.13]
 
- Infinite recursion, Serialization and ... [36.11]
 
- Infinity: floating point numbers ... [29.15]
 
- Infix operators ... [5.3]
 
- Inherit your own exception classes (ultimately) from std::exception (see also under Exceptions) ... [17.6]
 
- Inheritance but no pointers, Serialization and ... [36.8]
 
- Inheritance, Multiple ... [25]
 
 
- Inheritance, private ... [24], [24.1]
 
 - Access rules ... [24.6]
 
 - Compared with composition ... [24.2]
 
 - Criteria for private inheritance vs. composition ... [24.3]
 
 - Derived* to private Base* conversion (invalid) ... [24.4]
 
 - private vs. protected inheritance ... [24.5]
 
 
 
- Inheritance, protected ... [24]
 
 - Access rules ... [24.6]
 
 - protected vs. private inheritance ... [24.5]
 
 
 
- Inheritance, Virtual ... [25]
 
 
- Inheritance ... [6.8], [19], [20], [21], [22], [23]
 
 - Abstract base classes (ABCs) ... [22], [22.2], [22.3]
 
 - Abstract functions ... [22.4]
 
 - Access of private by derived ... [19.6]
 
 - Access of protected and private ... [19.5]
 
 - Access of protected by derived ... [19.7], [19.8]
 
 - Array of Derived vs. of Base ... [21.4]
 
 - Bag of Apple vs. of Fruit ... [21.3]
 
 - Calling virtuals from constructors ... [10.7], [23.5]
 
 - Calling virtuals from constructors: idiom ... [23.6]
 
 - Calling virtuals from destructors ... [23.5], [23.7]
 
 - Calling virtuals from non-virtuals in the base class ... [23.1], [23.2]
 
 - Circle vs. Ellipse ... [21.6], [21.7], [21.8], [21.9], [21.10], [21.11]
 
 - Container of Thing vs. of Anything ... [21.3]
 
 - Derived* → Base* conversion ... [19.4], [21.2]
 
 - Derived* → private Base* conversion (invalid) ... [24.4]
 
 - Derived** → Base** conversion (invalid) ... [21.2]
 
 - Destructor order ... [11.12]
 
 - Determining if it is proper ... [21.12]
 
 - Differences between C++ and Smalltalk inheritance ... [30.4]
 
 - Dynamic binding vs. switch statements ... [25.4]
 
 - Friendship privileges are not inherited ... [14.4]
 
 - Fully-qualified calls to base-class member functions ... [20.5]
 
 - Hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Hiding rule ... [23.9]
 
 - How to code inheritance ... [19.3]
 
 - Importance of inheritance ... [19.1]
 
 - Intuition isn't always correct ... [21.3]
 
 - Is-a-kind-of ... [19.2], [21.11], [21.12]
 
 - Meaning is "is substitutable for" ... [21.8], [21.11]
 
 - Meaning is not "is a kind of" ... [21.8], [21.11]
 
 - Meaning is not "is a subset of" ... [21.8], [21.11]
 
 - Meaning is not "is a" ... [21.8], [21.11]
 
 - Multiple inheritance ... [25]
 
 - Object layout in memory ... [32.9], [38.9]
 
 - Old code calls new code ... [6.10]
 
 - Parking-lot of Car vs. of Vehicle ... [21.3]
 
 - Preventing inheritance (i.e., "final classes") ... [23.11]
 
 - private inheritance ... [24], [24.1]
 
 - private inheritance access rules ... [24.6]
 
 - private inheritance vs. composition ... [24.2], [24.3]
 
 - protected inheritance ... [24]
 
 - protected inheritance access rules ... [24.6]
 
 - protected vs. private inheritance ... [24.5]
 
 - Pure virtual functions ... [22.4]
 
 - Redefining non-virtuals ... [23.8]
 
 - Smalltalk differences ... [30.5]
 
 - Specification device ... [19.2], [21.11], [21.12]
 
 - virtual constructors ... [16.24], [17.10], [20.8], [22.5]
 
 - virtual data ... [31.2], [31.3]
 
 - virtual destructor coding standard ... [20.7]
 
 - virtual functions ... [20.1]
 
 - virtual functions are central to OO ... [6.9]
 
 - Virtual inheritance ... [25]
 
 - What your Mother didn't tell you ... [23]
 
 - When to use inheritance ... [19.2]
 
 
 
- init() functions ... [10.3]
 
- Initialization lists
 
 
- Initialization of a built-in/intrinsic type ... [10.16], [26.9]
 
- Initialization of a static member datum ... [10.10], [10.11], [10.12], [10.13], [10.15]
 
- Initialization of instances via constructors ... [10.1]
 
- Inline functions ... [9]
 
 - Better than #define macros ... [9.5]
 
 - Can make executables larger ... [9.3]
 
 - Can make executables smaller(!) ... [9.3]
 
 - Can make performance better ... [9.3]
 
 - Can make performance worse(!) ... [9.3]
 
 - Can make thrashing happen ... [9.3]
 
 - Can make thrashing not happen(!) ... [9.3]
 
 - Can make zero speed-difference(!) ... [9.3]
 
 - Defined outside class body ... [9.7]
 
 - Defined within class body ... [9.8]
 
 - Forward declarations ... [39.13]
 
 - Functionoids ... [33.11]
 
 - Inlining virtual functions ... [31.5], [31.6]
 
 - Like a #define macro ... [9.1]
 
 - Member functions ... [9.7]
 
 - Non-member functions ... [9.6]
 
 - Procedural integration ... [9.2]
 
 - Safety without loss of speed ... [6.8], [9.4]
 
 
 
- inline keyword ... [9.1], [9.6], [9.7], [9.9], [39.13]
 
- Input/output ... [15]
 
 - Bad input, ignoring ... [15.3]
 
 - Binary mode ... [15.13]
 
 - Binary mode on MS-DOS ... [15.12]
 
 - clear() and std::istream ... [15.3]
 
 - Ending lines: std::endl vs. '\n' ... [15.7]
 
 - Eof and std::istream ... [15.2], [15.5]
 
 - if (std::cin >> foo) and std::istream ... [39.2], [39.3]
 
 - if (std::cout << foo) and std::istream ... [39.1]
 
 - ignore() and std::istream ... [15.3]
 
 - Invalid input characters and std::istream ... [15.2], [15.3]
 
 - operator<< (virtual) and std::ostream ... [15.11]
 
 - operator<< and std::ostream ... [15.8], [15.9]
 
 - operator>> and std::istream ... [15.10]
 
 - Remembering bad state and std::istream ... [15.6]
 
 - std::istream and clear() ... [15.3]
 
 - std::istream and eof ... [15.2], [15.5]
 
 - std::istream and if (std::cin >> foo) ... [39.2], [39.3]
 
 - std::istream and if (std::cout << foo) ... [39.1]
 
 - std::istream and ignore() ... [15.3]
 
 - std::istream and invalid input characters ... [15.2], [15.3]
 
 - std::istream and remembering bad state ... [15.6]
 
 - std::istream and while (std::cin >> foo) ... [15.4]
 
 - std::istream operator>> ... [15.10]
 
 - std::ostream operator<< ... [15.8], [15.9]
 
 - std::ostream operator<< (virtual) ... [15.11]
 
 - while (std::cin >> foo) and std::istream ... [15.4]
 
 
 
- Insecure, pathetic wannabes ... [9.9]
 
- Inspector methods ... [18.10], [18.11], [18.12]
 
- Installed base of C++: size ... [6.6], [6.8]
 
- Instance initialized via constructors ... [10.1]
 
- Instance-data formats, Version numbers during serialization ... [36.7]
 
- int main(), not void main() ... [5.8], [29.3]
 
- int: choosing between integer sizes ... [29.5]
 
- Integration, Procedural ... [9.2]
 
- Interfaces
 
 - A simplified view in the user's vocabulary ... [7.3]
 
 - Abstract base classes (ABCs) ... [22.2]
 
 - Design interfaces from the outside-in ... [13.13]
 
 - Goal of interface design ... [7.4]
 
 - More valuable than implementation ... [22.1]
 
 - protected interface ... [19.7], [19.8], [19.9]
 
 - Separate from implementation ... [22.2]
 
 
 
- International Obfuscated C Coding Contest ... [27.14]
 
- Interview questions ... [6.14]
 
- Intrinsic (built-in, primitive) data types ... [26]
 
 
- Intuition isn't always correct ... [21.3], [21.4], [21.6], [21.7], [21.8], [21.9], [21.11]
 
- Invalid conversion
 
 - Array-of-Derived → array-of-Base ... [21.4]
 
 - Derived** → Base** pointers ... [21.2]
 
 - Foo** → const Foo** pointers ... [18.17]
 
 
 
- Invalid input characters (see Input/output) ... [15.2]
 
- invalid input characters and std::istream (input/output) ... [15.2], [15.3]
 
- Inversion Principle ... [20.6]
 
- iostream header ... [15.1]
 
- iostream.h (see "iostream header") ... [15.1]
 
- Is-a-kind-of (see also Inheritance) ... [19.2], [21.12]
 
- ISO ... [6.12]
 
 
- istream and clear() (input/output) ... [15.3]
 
- istream and eof (input/output) ... [15.2], [15.5]
 
- istream and if (std::cin >> foo) (input/output) ... [39.2], [39.3]
 
- istream and if (std::cout << foo) (input/output) ... [39.1]
 
- istream and ignore() (input/output) ... [15.3]
 
- istream and invalid input characters (input/output) ... [15.2], [15.3]
 
- istream and remembering bad state (input/output) ... [15.6]
 
- istream and while (std::cin >> foo) (input/output) ... [15.4]
 
- istream input operator: operator>> ... [15.4], [15.10], [39.2], [39.3]
 
- istream operator>> (input/output) ... [15.10]
 
- istringstream ... [39.2], [39.3]
 
- Iterators ... [34.5]
 
- itoa() ... [39.1]
 
"J"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Java vs. C++ ... [6.5]
 
- javadoc-like tools ... [40.1]
 
- Job ads ... [5.10]
 
- Joins within graphs (definition), Serialization and ... [36.13]
 
"K"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- kbhit() ... [15.17]
 
- Keep private things private; Friends ... [14.2]
 
- Keyboard echo: turning it off ... [15.18]
 
- Keyboard: get individual key presses ... [15.17]
 
- keypressed() ... [15.17]
 
- Keywords
 
 - catch ... [17.1]
 
 - class ... [7.1], [7.8]
 
 - const ... [13.9], [18.1]
 
 - const_cast ... [18.13]
 
 - delete ... [13.10], [16.9], [16.11], [16.12], [16.14], [16.15], [38.7]
 
 - explicit ... [13.9], [20.7]
 
 - export ... [35.14]
 
 - extern ... [32], [32.3]
 
 - for ... [39.8]
 
 - if ... [17.1]
 
 - inline ... [9.1], [9.6], [9.7], [9.9], [39.13]
 
 - mutable ... [18.13]
 
 - new ... [16.1], [16.4], [16.5], [16.11]
 
 - operator ... [13.4]
 
 - private ... [7.4], [7.6], [24]
 
 - protected ... [7.4], [24]
 
 - public ... [7.8]
 
 - sizeof ... [26.1], [26.2], [26.5], [26.6]
 
 - struct ... [7.1], [7.8]
 
 - template ... [35.14]
 
 - this ... [10.7]
 
 - throw ... [17.1], [17.9]
 
 - try ... [17.1]
 
 - typeid ... [34.4]
 
 - typename ... [16.18], [16.19], [35.2], [35.3], [35.4], [35.12], [35.13]
 
 - using ... [23.9], [27.5]
 
 - virtual ... [16.24], [17.10], [20.7], [25.9]
 
 
 
- Kind-of (see also Inheritance) ... [19.2]
 
- Kruskal ... [5.3]
 
- KUTGW (Acronym) ... [5.1]
 
"L"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Land vehicle (example) ... [25.5], [25.7]
 
- Language wars ... [6.5]
 
- Large executables ... [37.8], [38.10]
 
- Last rites (see also Destructors) ... [11.1]
 
- LaTeX
 
 - C++2LaTeX pretty printer ... [40.3]
 
 - Macros for "C++" ... [40.2]
 
 
 
- Law of the Big Three ... [16.17], [22.5], [27.10]
 
- Law, Murphy's ... [16.2]
 
- Layer of indirection ... [31.5]
 
- Layout of object in memory ... [32.9], [38.9]
 
- Leaf classes ... [23.11]
 
- Leaf methods ... [23.12]
 
- Leaks, memory
 
 
- Learning OO/C++ ... [28]
 
 - Getting started ... [29.2]
 
 - How long does it take ... [6.7]
 
 - No need to learn C first ... [28.2]
 
 - No need to learn Smalltalk first ... [28.3]
 
 
 
- Least bad; Sometimes "evil" things are ... [6.16]
 
- Left operand: friend-functions allow promotion of ... [14.5]
 
- Legal mumbo jumbo
 
 
- Legality books on C++ ... [28.4], [28.6]
 
- Length of time needed to learn OO/C++ ... [6.7]
 
- Less-than operator: operator< ... [13.9]
 
- Less-than-or-equal-to operator: operator<= ... [13.9]
 
- Lgrind ... [40.3]
 
- lgrind (see Pretty printing) ... [40.3]
 
- Libraries FAQ ... [37.9]
 
- Libraries ... [37]
 
 
- Lifetime of objects
 
 - Controlling lifetime of locals ... [11.6], [11.7], [11.8]
 
 - In heterogeneous containers ... [34.4]
 
 - Order of destruction for array elements ... [11.3]
 
 - Order of destruction for locals ... [11.2]
 
 - Register liveness ... [31.5]
 
 - Rule for for loop variables ... [39.8]
 
 - Using friend classes to achieve separate lifetimes ... [14.2]
 
 
 
- Line-breaks: whitespace standards ... [29.10]
 
- Linker errors ... [10.11], [23.10], [32.7], [35.13], [35.14], [35.15], [35.16], [40.6]
 
- Lists, initialization
 
 
- Literals: naming numeric literals ... [29.11]
 
- Literals: numeric literal suffixes ... [29.12]
 
- LLVM C++ compiler ... [38.13]
 
- Local objects, don't call dtor explicitly ... [11.5], [11.6]
 
- Log base 2 ... [26.12]
 
- Log of a negative number ... [29.15]
 
- Logical Interface different from Physical Layout ... [13.11], [13.12]
 
- long: choosing between integer sizes ... [29.5]
 
"M"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Macro {TT{NAME2() for token pasting ... [39.6]
 
- Macros, #define
 
 - Evil but sometimes useful ... [32.4], [33.5], [33.6]
 
 - Evil! ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Prefer const vs. #define ... [29.7]
 
 - See also Inline functions ... [9.1], [9.5], [28.2], [30.3], [32.4], [33.5], [33.6]
 
 - With if ... [39.4]
 
 - With multiple lines ... [39.5]
 
 - With token pasting ... [39.6]
 
 
 
- Macros, evilness of ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
- main() returns int, not void ... [5.8], [29.3]
 
- Makefile ... [35.14]
 
- Making decisions; Software development is ... [6.16], [9.3], [19.8], [19.9], [25.2], [25.3], [29.7], [29.11], [36.2], [36.3], [36.5], [36.6]
 
- malloc() ... [16]
 
 - Allocating an array with new T[n] ... [16.11]
 
 - Automatically freed on program exit ... [10.14]
 
 - Automating a NULL test ... [16.7]
 
 - Breaking it into pools ... [11.14]
 
 - Corruption  bang, you're dead ... [16.12], [30.3], [38.7], [38.8]
 
 - delete and free() might use different heaps ... [16.9], [16.10]
 
 - delete handles NULL automatically ... [16.8]
 
 - delete has two steps ... [16.9]
 
 - delete this ... [16.15]
 
 - delete[] uses magic ... [16.14], [38.7], [38.8]
 
 - delete[] vs. delete ... [16.12]
 
 - delete[] vs. delete for built-in types ... [16.13], [26.11]
 
 - Deleting an array with delete[] ... [16.11]
 
 - Difference between delete and delete[] ... [13.10], [16.3], [16.11]
 
 - Garbage collectors ... [16.26], [16.27], [16.28]
 
 - Might use different heap from new ... [16.5]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Multi-dimensional arrays ... [16.16], [16.17]
 
 - new and malloc() might use different heaps ... [16.5]
 
 - new has two steps ... [16.10]
 
 - new never returns NULL ... [16.6]
 
 - Placement new ... [16.10]
 
 - Placement new doesn't allocate ... [11.10]
 
 - Prohibiting local objects ... [16.21]
 
 - realloc() ... [16.5]
 
 - Reference counting ... [16.22], [16.23], [16.24], [16.25]
 
 - Runtime costs of ... [31.2], [31.4], [31.5]
 
 - std::bad_alloc ... [16.6], [16.7]
 
 - std::set_new_handler ... [16.7]
 
 - Use std::auto_ptr only when pointing into the heap ... [23.6]
 
 - Why new is preferred over malloc() ... [16.4]
 
 - Why use new rather than malloc() ... [16.4]
 
 
 
- Managerial Issues ... [6]
 
 - Business-centricity vs. Techno-centricity ... [6.5]
 
 - C++ is a practical tool ... [6.1]
 
 - C++ is not a perfect tool ... [6.2]
 
 - Length of time needed to learn OO/C++ ... [6.7]
 
 - Size of the installed base ... [6.6]
 
 - Some advantages of Generic Programming ... [6.4]
 
 - Some advantages of OO ... [6.3]
 
 - Standardization of C++ ... [6.12], [6.13]
 
 
 
- map<Key,Value> ... [8.7], [34.2]
 
- Maserati ... [30.5]
 
- Matrix subscript operator ... [13.10], [13.11], [13.12]
 
- Meaningwise (Abstract) state vs. Bitwise (Concrete) state ... [18.10], [18.11]
 
- Member functions: inline ... [9.7], [9.8]
 
- Member object containment ... [39.12]
 
- Member objects should be self-managing (see also under Exceptions) ... [17.4]
 
- Member-function pointer ... [33]
 
 - Address of a C++ method ... [33.4]
 
 - Array of pointer-to-member ... [33.6]
 
 - Can't convert to void* ... [33.7]
 
 - Contrast to pointer-to-function ... [33.1]
 
 - Converting to pointer-to-function ... [33.2], [33.3]
 
 - Passing as pointer-to-function ... [33.2]
 
 
 
- Member-function pointers ... [33]
 
- Member-functions vs. friend-functions: choosing ... [14.5]
 
- Memory leaks
 
 
- Memory pools ... [11.14]
 
- Mentoring ... [6.7], [17.13], [28.1]
 
- Merge-sort ... [5.3]
 
- Messages, Understanding error- ... [35.17]
 
- Method chaining ... [8.4], [10.18]
 
- Metrics of "goodness": Schedule + Cost + Risk ... [6.17], [23.3]
 
- MFC
 
 
- Microsoft C++ freely downloadable command-line compiler ... [38.1]
 
- Microsoft Visual C++
 
 
- Microsoft Windows
 
 - Binary mode for opening streams ... [15.12]
 
 - Binary mode for std::cin and std::cout ... [15.13]
 
 - Newsgroups specializing in ... [5.9]
 
 - OS-specific questions/answers ... [40.5]
 
 
 
- Mindset, right and wrong (see also under Exceptions) ... [17.12], [17.13]
 
- MinGW ... [38.5]
 
- MinGW free C++ compiler ... [38.1]
 
- Minimize the ripple effect ... [8.7]
 
- Minimum Spanning Trees in C++ ... [5.3]
 
- Mirror sites ... [2]
 
- Missing virtual on some base class dtors, evilness of ... [20.7]
 
- Mixed-mode arithmetic operators (see also Operator overloading) ... [13.9]
 
- Mixing malloc() and delete, evilness of ... [16.3]
 
- Mixing new and free(), evilness of ... [16.3]
 
- Mixing new T[n] with delete p, evilness of ... [16.12], [16.13], [26.11]
 
- Mixing realloc() and new, evilness of ... [16.5]
 
- Mixing
 
 - Mixing C and C++ code ... [32]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 
 
- Moniker "FAQ" ... [6.18]
 
- Monolithic class hierarchies ... [37.5], [37.6]
 
- Morality books on C++ ... [28.4], [28.5]
 
- More than 8-bits/byte (on some machines) ... [26.5], [26.6]
 
- Moving the cursor on the screen ... [15.19]
 
- MS-DOS
 
 - Binary mode for opening streams ... [15.12]
 
 - Binary mode for std::cin and std::cout ... [15.13]
 
 - Newsgroups specializing in ... [5.9]
 
 - OS-specific questions/answers ... [40.5]
 
 
 
- MSVC++
 
 
- Multi-dimensional arrays (see also under Templates) ... [16.18], [16.19]
 
- Multi-dimensional arrays
 
 
- Multi-threading
 
 - Can randomly expose errors ... [16.2]
 
 - Performance tradeoffs ... [36.12]
 
 - Reader/writer conflicts ... [36.12]
 
 - Writer/writer conflicts ... [36.12]
 
 
 
- Multiple encapsulated instances ... [6.8], [7.5], [34.5]
 
- Multiple inheritance ... [25]
 
 
- Multiply operator: operator* ... [13.1]
 
- Murphy's law ... [16.2]
 
- mutable (Const correctness) ... [18.13]
 
- mutable keyword ... [18.13]
 
- Mutator methods ... [18.10], [18.11], [18.12]
 
- MYOB (Acronym) ... [5.1]
 
"N"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Naive/wrong beliefs
 
 - "Always" and "Never" rules ... [23.3]
 
 - "Evil" things should never be used ... [6.15]
 
 - Always name numeric literals ... [29.11]
 
 - Friendship breaks encapsulation ... [14.2]
 
 - inline functions always improve performance ... [9.3]
 
 - Methods always better than friend-functions ... [15.9]
 
 - Multi-line macros simply use {...} ... [39.5]
 
 - Never use #define ... [29.7]
 
 - Never use multiple-inheritance ... [25.2], [25.3]
 
 - protected data is evil ... [19.8]
 
 - Software has rules that always apply ... [6.16]
 
 - There exists a purely technical definition of "good" ... [6.17]
 
 - Token-pasting doesn't require two levels of macros ... [39.6]
 
 
 
- Name hiding ... [23.9]
 
- NAME2() macro for token pasting ... [39.6]
 
- Named Constructor Idiom ... [10.8], [16.21], [16.24]
 
- Named Parameter Idiom ... [10.18]
 
- Namespaces and using ... [27.5]
 
- Naming numeric literals ... [29.11]
 
- NaN: comparisons ... [29.14]
 
- NaN: not a number ... [29.15]
 
- NCITS ... [6.13]
 
- Nested generalization ... [25.5]
 
- Netiquette ... [5]
 
 - Acronyms ... [5.1]
 
 - Attachments: don't! ... [5.4]
 
 - From: line of a posting ... [5.4]
 
 - General netiquette ... [5.4]
 
 - Getting and reading other FAQs ... [5.14]
 
 - HTML postings: don't! ... [5.4]
 
 - Job ads ... [5.10]
 
 - Posting code ... [5.8]
 
 - Reply-To: line of a posting ... [5.4]
 
 - Response to off-topic postings ... [5.12]
 
 - Resumé postings ... [5.11]
 
 - Rich-text postings: don't! ... [5.4]
 
 - Selecting an appropriate newsgroup ... [5.9]
 
 - Spam ... [5.13]
 
 - Subject: line of a posting ... [5.7]
 
 - Top-post: don't! ... [5.4]
 
 
 
- New handler ... [16.7]
 
- new keyword ... [16.1], [16.4], [16.5], [16.11]
 
- new ... [16], [16.1]
 
 - Advantages over malloc() ... [16.4]
 
 - Allocating an array with new T[n] ... [16.11]
 
 - Automatically freed on program exit ... [10.14]
 
 - Automating a NULL test ... [16.7]
 
 - Breaking it into pools ... [11.14]
 
 - Corruption  bang, you're dead ... [16.12], [30.3], [38.7], [38.8]
 
 - delete and free() might use different heaps ... [16.9], [16.10]
 
 - delete handles NULL automatically ... [16.8]
 
 - delete has two steps ... [16.9]
 
 - delete this ... [16.15]
 
 - delete[] uses magic ... [16.14], [38.7], [38.8]
 
 - delete[] vs. delete ... [16.12]
 
 - delete[] vs. delete for built-in types ... [16.13], [26.11]
 
 - Deleting an array with delete[] ... [16.11]
 
 - Difference between delete and delete[] ... [13.10], [16.3], [16.11]
 
 - Garbage collectors ... [16.26], [16.27], [16.28]
 
 - Might use different heap from malloc() ... [16.5]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Mixing with free() ... [16.3]
 
 - Multi-dimensional arrays ... [16.16], [16.17]
 
 - new and malloc() might use different heaps ... [16.5]
 
 - new has two steps ... [16.10]
 
 - new never returns NULL ... [16.6]
 
 - Placement new ... [16.10]
 
 - Placement new doesn't allocate ... [11.10]
 
 - Prohibiting local objects ... [16.21]
 
 - realloc() ... [16.5]
 
 - Reference counting ... [16.22], [16.23], [16.24], [16.25]
 
 - Runtime costs of ... [31.2], [31.4], [31.5]
 
 - std::bad_alloc ... [16.6], [16.7]
 
 - std::set_new_handler ... [16.7]
 
 - Use std::auto_ptr only when pointing into the heap ... [23.6]
 
 - Why use new rather than malloc() ... [16.4]
 
 
 
- Newbie questions / answers ... [29]
 
- Newlines: whitespace standards ... [29.10]
 
- Newsgroups
 
 - Comp.graphics ... [5.9]
 
 - Comp.lang.c ... [5.9]
 
 - Comp.lang.c++ ... [5.9]
 
 - Comp.lang.c++.moderated ... [5.9]
 
 - Comp.object ... [5.9]
 
 - Comp.os.ms-windows.programmer.misc ... [5.9]
 
 - Comp.os.ms-windows.programmer.tools.* ... [5.9]
 
 - Comp.os.msdos.programmer ... [5.9], [40.5]
 
 - Comp.os.msdos.programmer.turbovision ... [5.9]
 
 - Comp.programming ... [5.9]
 
 - Comp.sources.wanted ... [5.9]
 
 - Comp.std.c++ ... [5.9]
 
 - Comp.sys.mac.oop.* ... [5.9]
 
 - Comp.sys.mac.programmer.* ... [5.9]
 
 - Comp.unix.programmer ... [5.9], [40.5]
 
 - Comp.unix.solaris ... [5.9]
 
 - Comp.windows.ms.programmer ... [40.5]
 
 - Gnu.g++.bug ... [5.9]
 
 - Gnu.g++.help ... [5.9]
 
 
 
- NIHCL (National Institute of Heath Class Library) ... [37.6]
 
- No inheritance, no pointers, Serialization and ... [36.7]
 
- No Warranty ... [1.4]
 
- Nodes within graphs (definition), Serialization and ... [36.13]
 
- noecho() ... [15.18]
 
- Non-abstract functions ... [20.6]
 
- Non-human-readable format mechanics, Serialization and ... [36.6]
 
- Non-human-readable format tradeoffs, Serialization and ... [36.3]
 
- Non-member functions: inline ... [9.6]
 
- Non-pure virtual functions ... [20.6]
 
- Non-virtual
 
 - Calling a virtual ... [23.1], [23.2]
 
 - Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals Idiom ... [23.3]
 
 
 
- Nondependent names (see also under Templates) ... [35.18], [35.19]
 
- Normal syntax: use when you can ... [27.14]
 
- Nuclear submarine ... [21.2], [21.3]
 
- NULL ... [16.6], [16.7]
 
- Number of copies made internally (see also under Exceptions) ... [17.11]
 
- Numeric literal suffixes: L, U and f ... [29.12]
 
- Numeric literals: naming them ... [29.11]
 
- numeric_limits<T> ... [15.3], [15.6], [35.8]
 
- Numerical Recipes code ... [37.7]
 
"O"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Obfuscated C Code Contest ... [27.14]
 
- Object ... [7.2]
 
- Object formats, Version numbers during serialization ... [36.7]
 
- Object identity, Serialization and ... [36.11]
 
- Object layout in memory ... [32.9], [38.9]
 
- Object lifetime
 
 - Controlling lifetime of locals ... [11.6], [11.7], [11.8]
 
 - In heterogeneous containers ... [34.4]
 
 - Order of destruction for array elements ... [11.3]
 
 - Order of destruction for locals ... [11.2]
 
 - Register liveness ... [31.5]
 
 - Rule for for loop variables ... [39.8]
 
 - Using friend classes to achieve separate lifetimes ... [14.2]
 
 
 
- Object-oriented: So what? ... [6.3]
 
- Observable semantics ... [9.9], [13.9], [35.7], [35.8]
 
- Off-topic postings ... [5.10], [5.11], [5.12]
 
- Old code calls new code ... [6.10]
 
- On floating point arithmetic ... [29.17]
 
- One size does not fit all ... [6.16], [6.17], [9.3], [18.8], [18.9], [19.8], [23.3], [25.2], [25.3], [29.7], [29.11], [36.2], [36.3], [36.5], [36.6]
 
- OO (Acronym) ... [5.1]
 
- OO design books ... [28.8]
 
- Operands: friend-functions allow promotion of first ... [14.5]
 
- Operator ?: ... [27.6]
 
- operator delete(void*) ... [16.9], [16.12]
 
- operator delete(void*) (see also Operator overloading) ... [16.9], [16.12]
 
- operator delete[](void*) ... [16.12]
 
- operator delete[](void*) (see also Operator overloading) ... [16.12]
 
- operator keyword ... [13.4]
 
- operator new(size_t) ... [16.10]
 
- operator new(size_t) (see also Operator overloading) ... [16.10]
 
- Operator overloading ... [13]
 
 - Arithmetic operators ... [13.9]
 
 - Assignment operator ... [12], [22.5]
 
 - Behavioral equivalence ... [13.9]
 
 - Can't invent new operators ... [13.7]
 
 - Can't replace behavior on built-in operators ... [13.6], [26.10]
 
 - Coding standards ... [27.10]
 
 - Comma operator ... [13.9]
 
 - Constructive operators should return by value ... [13.9]
 
 - Constructive operators shouldn't change their operands ... [13.9]
 
 - Decrement operators operator-- ... [13.14], [13.15]
 
 - Doctrine of Least Surprise ... [13.9]
 
 - Does help the users of a class ... [13.2]
 
 - Does not help the developer of a class ... [13.4]
 
 - Examples ... [13.3]
 
 - Exploits developer's intuition ... [6.8]
 
 - Guidelines for when and how ... [13.9]
 
 - Increment operators operator++ ... [13.14], [13.15]
 
 - Mixed-mode arithmetic operators ... [13.9]
 
 - operator delete(void*) ... [16.9], [16.12]
 
 - operator delete[](void*) ... [16.12]
 
 - operator new(size_t) ... [16.10]
 
 - operator!= (inequality test operator) ... [13.9], [13.13]
 
 - operator& (address-of operator) ... [16.25]
 
 - operator() (funcall operator) ... [13.10], [13.11], [13.12], [16.17], [16.18], [16.19]
 
 - operator* (dereference operator) ... [8.7], [13.9], [13.13], [16.22], [16.25]
 
 - operator* (multiply operator) ... [13.1]
 
 - operator+ (addition operator) ... [13.1]
 
 - operator++ (increment operator) ... [13.9], [13.13]
 
 - operator++ (prefix vs. postfix increment operator) ... [13.14]
 
 - operator++ (prefix vs. postfix speed) ... [13.15]
 
 - operator-- (prefix vs. postfix increment operator) ... [13.14]
 
 - operator-- (prefix vs. postfix speed) ... [13.15]
 
 - operator-> (dereference operator) ... [8.7], [16.22], [16.25]
 
 - operator< (less-than operator) ... [13.9]
 
 - operator<< (std::ostream output operator) ... [8.4], [15.8], [15.9], [39.1]
 
 - operator<< (std::ostream output operator; virtual) ... [15.11]
 
 - operator<= (less-than-or-equal-to operator) ... [13.9]
 
 - operator= ... [12], [13.9], [22.5]
 
 - operator== (equality test operator) ... [13.9], [13.13]
 
 - operator> (greater-than operator) ... [13.9]
 
 - operator>= (greater-than-or-equal-to operator) ... [13.9]
 
 - operator>> (std::istream input operator) ... [15.4], [15.10], [39.2], [39.3]
 
 - operator[] (subscript operator comes in pairs) ... [13.9], [18.12]
 
 - operator[] (subscript operator) ... [8.3], [13.4], [13.10], [13.11], [13.12]
 
 - Promotion on the left hand side ... [13.9]
 
 - Purpose of operator overloading ... [13.1]
 
 - Rules of thumb for when and how ... [13.9]
 
 - Self-assignment ... [12.1], [12.2], [12.3]
 
 - Short-circuit operators ... [13.9]
 
 - Which operators can be overloaded ... [13.5]
 
 - Which operators should be overloaded ... [13.8]
 
 
 
- operator!= (inequality test operator) ... [13.9], [13.13]
 
- operator!= (inequality test operator) (see also Operator overloading) ... [13.9], [13.13]
 
- operator& (address-of operator) ... [16.25]
 
- operator& (address-of operator) (see also Operator overloading) ... [16.25]
 
- operator() (funcall operator) ... [13.10], [13.11], [13.12], [16.17], [16.18], [16.19]
 
- operator() (funcall operator) (see also Operator overloading) ... [13.10], [13.11], [13.12], [16.17], [16.18], [16.19]
 
- operator* (dereference operator) ... [8.7], [13.9], [13.13], [16.22], [16.25]
 
- operator* (dereference operator) (see also Operator overloading) ... [8.7], [13.9], [13.13], [16.22], [16.25]
 
- operator* (multiply operator) ... [13.1]
 
- operator* (multiply operator) (see also Operator overloading) ... [13.1]
 
- operator+ (addition operator) ... [13.1]
 
- operator+ (addition operator) (see also Operator overloading) ... [13.1]
 
- operator++ (increment operator) ... [13.9], [13.13]
 
- operator++ (increment operator) (see also Operator overloading) ... [13.9], [13.13]
 
- operator++ (prefix vs. postfix increment operator) ... [13.14]
 
- operator++ (prefix vs. postfix increment operator) (see also Operator overloading) ... [13.14]
 
- operator++ (prefix vs. postfix speed) ... [13.15]
 
- operator++ (prefix vs. postfix speed) (see also Operator overloading) ... [13.15]
 
- operator-- (prefix vs. postfix increment operator) ... [13.14]
 
- operator-- (prefix vs. postfix increment operator) (see also Operator overloading) ... [13.14]
 
- operator-- (prefix vs. postfix speed) ... [13.15]
 
- operator-- (prefix vs. postfix speed) (see also Operator overloading) ... [13.15]
 
- operator-> (dereference operator) ... [8.7], [16.22], [16.25]
 
- operator-> (dereference operator) (see also Operator overloading) ... [8.7], [16.22], [16.25]
 
- operator< (less-than operator) ... [13.9]
 
- operator< (less-than operator) (see also Operator overloading) ... [13.9]
 
- operator<< (std::ostream output operator) ... [8.4], [15.8], [15.9], [39.1]
 
- operator<< (std::ostream output operator) (see also Operator overloading) ... [8.4], [15.8], [15.9], [39.1]
 
- operator<< (std::ostream output operator; virtual) ... [15.11]
 
- operator<< (std::ostream output operator; virtual) (see also Operator overloading) ... [15.11]
 
- operator<< (virtual) and std::ostream (input/output) ... [15.11]
 
- operator<< and std::ostream (input/output) ... [15.8], [15.9]
 
- operator<= (less-than-or-equal-to operator) ... [13.9]
 
- operator<= (less-than-or-equal-to operator) (see also Operator overloading) ... [13.9]
 
- operator= (see also Operator overloading) ... [12], [13.9], [22.5]
 
- operator== (equality test operator) ... [13.9], [13.13]
 
- operator== (equality test operator) (see also Operator overloading) ... [13.9], [13.13]
 
- operator= ... [12], [13.9], [22.5]
 
 
- operator> (greater-than operator) ... [13.9]
 
- operator> (greater-than operator) (see also Operator overloading) ... [13.9]
 
- operator>= (greater-than-or-equal-to operator) ... [13.9]
 
- operator>= (greater-than-or-equal-to operator) (see also Operator overloading) ... [13.9]
 
- operator>> (std::istream input operator) ... [15.4], [15.10], [39.2], [39.3]
 
- operator>> (std::istream input operator) (see also Operator overloading) ... [15.4], [15.10], [39.2], [39.3]
 
- operator>> and std::istream (input/output) ... [15.10]
 
- operator[] (subscript operator comes in pairs) ... [13.9], [18.12]
 
- operator[] (subscript operator comes in pairs) (see also Operator overloading) ... [13.9], [18.12]
 
- operator[] (subscript operator) ... [8.3], [13.4], [13.10], [13.11], [13.12]
 
- operator[] (subscript operator) (see also Operator overloading) ... [8.3], [13.4], [13.10], [13.11], [13.12]
 
- Optimization
 
 - Abstract destructor with inline definition ... [33.10]
 
 - const_cast ... [18.14]
 
 - Pure virtual destructor with inline definition ... [33.10]
 
 - Return-by-value optimization ... [10.9]
 
 
 
- Order of ctors with inheritance ... [25.14]
 
- Order of dtors with inheritance ... [25.15]
 
- Order of static constructors ... [10.12], [10.13], [10.15], [10.16], [26.9]
 
- Order of static destructors ... [10.14]
 
- OS/2
 
 - Binary mode for opening streams ... [15.12]
 
 - Binary mode for std::cin and std::cout ... [15.13]
 
 
 
- ostream operator<< (input/output) ... [15.8], [15.9]
 
- ostream operator<< (virtual) (input/output) ... [15.11]
 
- ostream output operator: operator<< ... [8.4], [15.8], [15.9], [39.1]
 
- ostream output operator; virtual: operator<< ... [15.11]
 
- ostringstream ... [35.8], [39.1]
 
- OTOH (Acronym) ... [5.1]
 
- Output/input ... [15]
 
 - Bad input, ignoring ... [15.3]
 
 - Binary mode ... [15.13]
 
 - Binary mode on MS-DOS ... [15.12]
 
 - clear() and std::istream ... [15.3]
 
 - Ending lines: std::endl vs. '\n' ... [15.7]
 
 - Eof and std::istream ... [15.2], [15.5]
 
 - if (std::cin >> foo) and std::istream ... [39.2], [39.3]
 
 - if (std::cout << foo) and std::istream ... [39.1]
 
 - ignore() and std::istream ... [15.3]
 
 - Invalid input characters and std::istream ... [15.2], [15.3]
 
 - operator<< (virtual) and std::ostream ... [15.11]
 
 - operator<< and std::ostream ... [15.8], [15.9]
 
 - operator>> and std::istream ... [15.10]
 
 - Remembering bad state and std::istream ... [15.6]
 
 - std::istream and clear() ... [15.3]
 
 - std::istream and eof ... [15.2], [15.5]
 
 - std::istream and if (std::cin >> foo) ... [39.2], [39.3]
 
 - std::istream and if (std::cout << foo) ... [39.1]
 
 - std::istream and ignore() ... [15.3]
 
 - std::istream and invalid input characters ... [15.2], [15.3]
 
 - std::istream and remembering bad state ... [15.6]
 
 - std::istream and while (std::cin >> foo) ... [15.4]
 
 - std::istream operator>> ... [15.10]
 
 - std::ostream operator<< ... [15.8], [15.9]
 
 - std::ostream operator<< (virtual) ... [15.11]
 
 - while (std::cin >> foo) and std::istream ... [15.4]
 
 
 
- Overloaded operators ... [13]
 
 - Arithmetic operators ... [13.9]
 
 - Assignment operator ... [12], [22.5]
 
 - Behavioral equivalence ... [13.9]
 
 - Can't invent new operators ... [13.7]
 
 - Can't replace behavior on built-in operators ... [13.6], [26.10]
 
 - Coding standards ... [27.10]
 
 - Comma operator ... [13.9]
 
 - Constructive operators should return by value ... [13.9]
 
 - Constructive operators shouldn't change their operands ... [13.9]
 
 - Decrement operators operator-- ... [13.14], [13.15]
 
 - Doctrine of Least Surprise ... [13.9]
 
 - Does help the users of a class ... [13.2]
 
 - Does not help the developer of a class ... [13.4]
 
 - Examples ... [13.3]
 
 - Exploits developer's intuition ... [6.8]
 
 - Guidelines for when and how ... [13.9]
 
 - Increment operators operator++ ... [13.14], [13.15]
 
 - Mixed-mode arithmetic operators ... [13.9]
 
 - operator delete(void*) ... [16.9], [16.12]
 
 - operator delete[](void*) ... [16.12]
 
 - operator new(size_t) ... [16.10]
 
 - operator!= (inequality test operator) ... [13.9], [13.13]
 
 - operator& (address-of operator) ... [16.25]
 
 - operator() (funcall operator) ... [13.10], [13.11], [13.12], [16.17], [16.18], [16.19]
 
 - operator* (dereference operator) ... [8.7], [13.9], [13.13], [16.22], [16.25]
 
 - operator* (multiply operator) ... [13.1]
 
 - operator+ (addition operator) ... [13.1]
 
 - operator++ (increment operator) ... [13.9], [13.13]
 
 - operator++ (prefix vs. postfix increment operator) ... [13.14]
 
 - operator++ (prefix vs. postfix speed) ... [13.15]
 
 - operator-- (prefix vs. postfix increment operator) ... [13.14]
 
 - operator-- (prefix vs. postfix speed) ... [13.15]
 
 - operator-> (dereference operator) ... [8.7], [16.22], [16.25]
 
 - operator< (less-than operator) ... [13.9]
 
 - operator<< (std::ostream output operator) ... [8.4], [15.8], [15.9], [39.1]
 
 - operator<< (std::ostream output operator; virtual) ... [15.11]
 
 - operator<= (less-than-or-equal-to operator) ... [13.9]
 
 - operator= ... [12], [13.9], [22.5]
 
 - operator== (equality test operator) ... [13.9], [13.13]
 
 - operator> (greater-than operator) ... [13.9]
 
 - operator>= (greater-than-or-equal-to operator) ... [13.9]
 
 - operator>> (std::istream input operator) ... [15.4], [15.10], [39.2], [39.3]
 
 - operator[] (subscript operator comes in pairs) ... [13.9], [18.12]
 
 - operator[] (subscript operator) ... [8.3], [13.4], [13.10], [13.11], [13.12]
 
 - Promotion on the left hand side ... [13.9]
 
 - Purpose of operator overloading ... [13.1]
 
 - Rules of thumb for when and how ... [13.9]
 
 - Self-assignment ... [12.1], [12.2], [12.3]
 
 - Short-circuit operators ... [13.9]
 
 - Which operators can be overloaded ... [13.5]
 
 - Which operators should be overloaded ... [13.8]
 
 
 
- Overloading and (see also under Templates) ... [35.11]
 
- Overloading
 
 - Can't overload by return type ... [39.9]
 
 - const-overloading ... [18.12]
 
 - Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals Idiom ... [23.3]
 
 
 
"P"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Paging operating-systems: space-vs-speed issues ... [9.3]
 
- Pairs: subscript operator, operator[], usually comes in ... [13.9], [18.12]
 
- Paradigms
 
 
- Parameterized types (see also Templates) ... [35.5]
 
- Parameterized types (see also under Templates) ... [35.5]
 
- Parameters, named vs. positional ... [10.18]
 
- Parameters: passing by reference vs. pointer ... [8.1]
 
- Parking lot of Car vs. of Vehicle ... [21.3]
 
- Parser for C++ ... [38.11]
 
- Part-of (see also Composition) ... [19.2], [24.2]
 
- Pascal vs. C++ ... [6.5]
 
- Passing array-of-Derived as array-of-Base, evilness of ... [21.4], [21.5]
 
- Passing by pointers ... [8.1]
 
- Passing by references ... [8.1]
 
- Passing parameters
 
 
- Passwords: turning off keyboard "echo" ... [15.18]
 
- Pasting tokens via NAME2() macro ... [39.6]
 
- Pathetic wannabes ... [9.9]
 
- Patterns, design
 
 
- PEBCAC (Acronym) ... [5.1]
 
- PEBCAK (Acronym) ... [5.1]
 
- PERCEPS ... [40.1]
 
- PERCEPS: a javadoc-like tool ... [40.1]
 
- Perfect programming languages ... [6.2]
 
- Performance (see also under Templates) ... [35.10]
 
- Performance and inline ... [9.3]
 
- Performance of virtual functions ... [20.4]
 
- Performance tradeoffs; Multi-threading and ... [36.12]
 
- Permissions to copy this document ... [1]
 
- Permutations ... [5.3]
 
- Persistence ... [37.5], [37.6], [39.10]
 
- Physical Layout different from Logical Interface ... [13.11], [13.12]
 
- Placement new ... [11.14], [16.10]
 
- Plain Old Data; see POD types ... [26.7]
 
- PMFJI (Acronym) ... [5.1]
 
- POD types ... [26.7]
 
- Pointer casts, evilness of ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
- Pointer semantics in reference counting ... [16.22]
 
- Pointer to function, Member ... [33]
 
 - Address of a C++ method ... [33.4]
 
 - Array of pointer-to-member ... [33.6]
 
 - Can't convert to void* ... [33.7]
 
 - Contrast to pointer-to-function ... [33.1]
 
 - Converting to pointer-to-function ... [33.2], [33.3]
 
 - Passing as pointer-to-function ... [33.2]
 
 
 
- Pointer to function
 
 - Can't convert to void* ... [33.8]
 
 - Contrast pointer-to-member-function ... [33.1]
 
 - Converting from pointer-to-member-function ... [33.3]
 
 - Functionoids and... ... [33.10]
 
 - Members ... [33]
 
 - Sometimes you declare them unintentionally ... [10.19]
 
 - Weaknesses compared to functionoids ... [33.10]
 
 
 
- Pointer to member ... [33]
 
 - Address of a C++ method ... [33.4]
 
 - Array of pointer-to-member ... [33.6]
 
 - Can't convert to void* ... [33.7]
 
 - Contrast to pointer-to-function ... [33.1]
 
 - Converting to pointer-to-function ... [33.2], [33.3]
 
 - Passing as pointer-to-function ... [33.2]
 
 
 
- Pointer to members ... [33]
 
- Pointer, Dangling ... [12.2], [16.25]
 
- Pointer, Smart ... [13.3], [16.16], [16.22], [17.4]
 
- Pointer-to-const (Const correctness) ... [18.4], [18.5]
 
- Pointer-to-const aliasing (Const correctness) ... [18.16]
 
- Pointers contrasted to references ... [8.6]
 
- Pointers with cycles or non-trivial joins, Serialization and ... [36.11]
 
- Pointers with no cycles and no joins, Serialization and ... [36.9]
 
- Pointers with no cycles and only "trivial" joins, Serialization and ... [36.10]
 
- Pointers
 
 
- Points, Sequence ... [39.15], [39.16]
 
- Polish translation of this document ... [2.7]
 
- Polymorphic Exception Idiom ... [17.10]
 
- Polymorphic pointers ... [36.8]
 
- Polymorphically throwing (see also under Exceptions) ... [17.10]
 
- Polymorphism ... [6.8], [20.2]
 
- Pools, memory ... [11.14]
 
- Portuguese translation of this document ... [2.8]
 
- Posers: smoking out people who pretend to know C++ ... [6.14]
 
- Positional parameter vs. named parameters ... [10.18]
 
- Postfix operators ... [5.3]
 
- Posting code (see also Netiquette) ... [5.8]
 
- Posting guidelines for comp.lang.c++ ... [5.4]
 
- Power of 2 ... [26.12]
 
- Pragmatics ... [6.1]
 
- Precedence ... [13.7]
 
- Precise use of terminology ... [9.9]
 
- Prefer const vs. #define (Const correctness) ... [29.7]
 
- Prefix vs. postfix increment operator: operator++ ... [13.14]
 
- Prefix vs. postfix increment operator: operator-- ... [13.14]
 
- Prefix vs. postfix speed: operator++ ... [13.15]
 
- Prefix vs. postfix speed: operator-- ... [13.15]
 
- Prepare to die! (see also Destructors) ... [11.1]
 
- Preprocessor is evil ... [29.8]
 
- Preprocessor, evilness of ... [29.8]
 
- Pretenders: smoking out people who pretend to know C++ ... [6.14]
 
- Pretty printing
 
 
- Preventing inheritance (i.e., "final classes") ... [23.11]
 
- Preventing subversion of reference counting ... [16.25]
 
- Prim ... [5.3]
 
- Primitive (built-in, primitive) data types ... [26]
 
 
- printOn() method called by operator<< ... [15.9]
 
- private inheritance ... [24], [24.1]
 
 - Access rules ... [24.6]
 
 - Compared with composition ... [24.2]
 
 - Criteria for private inheritance vs. composition ... [24.3]
 
 - Derived* to private Base* conversion (invalid) ... [24.4]
 
 - private vs. protected inheritance ... [24.5]
 
 
 
- private keyword ... [7.4], [7.6], [24]
 
- private members
 
 
- Problems for homework ... [5.2], [5.3]
 
- Procedural integration and inline functions ... [9.2]
 
- Proficiency in OO/C++: How long does it take ... [6.7]
 
- Programming practices, Bad ... [6.15]
 
 - Arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Casting Derived** → Base** ... [21.2]
 
 - Casting Foo** → const Foo** ... [18.17]
 
 - Casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Derived** → Base**, Casting ... [21.2]
 
 - Explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Foo** → const Foo**, Casting ... [18.17]
 
 - Hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Missing virtual on some base class dtors ... [20.7]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Mixing realloc() and new ... [16.5]
 
 - Passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Preprocessor ... [29.8]
 
 - Unnecessary global variables ... [33.2], [39.8]
 
 
 
- Programming-by-example books on C++ ... [28.4], [28.7]
 
- Promotion of left operand: friend-functions allow ... [14.5]
 
- Promotion on the left hand side (see also Operator overloading) ... [13.9]
 
- Proper inheritance depends on behavior ... [21.12]
 
- protected inheritance ... [24]
 
 - Access rules ... [24.6]
 
 - protected vs. private inheritance ... [24.5]
 
 
 
- protected keyword ... [7.4], [24]
 
- protected members
 
 - Access rules ... [19.5]
 
 - protected data is not evil! ... [19.8]
 
 - Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals Idiom ... [23.3]
 
 - The protected interface ... [19.7]
 
 - Virtuals ... [23.3], [23.4]
 
 
 
- Prototype pattern ... [36.8]
 
- public inheritance ... [19], [20], [21], [22], [23]
 
- Public interface; not enough to determine inheritance ... [21.12]
 
- public keyword ... [7.8]
 
- public members
 
 - Access rules ... [19.5]
 
 - Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals Idiom ... [23.3]
 
 - The public interface ... [19.7], [19.8]
 
 
 
- Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals Idiom ... [23.3]
 
- Publicly accessible copy constructor (see also under Exceptions) ... [17.11]
 
- Pure OO programming languages ... [28.3]
 
- Pure virtual functions ... [20.6], [22.3], [22.4]
 
- Pure-technical definitions of "good" can be dangerous ... [6.17]
 
- Purely technical definitions of "good" are dangerous ... [6.17]
 
- Purpose of operator overloading (see also Operator overloading) ... [13.1]
 
- put_result_here: how the compiler might implement return-by-value ... [10.9]
 
"Q"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Qualified calls to base-class member functions ... [20.5]
 
- Questions to ask during an interview ... [6.14]
 
- Quick-sort ... [5.3]
 
"R"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- RAII (Resource Acquisition Is Initialization) (see also under Exceptions) ... [6.18], [17.12], [17.13]
 
- raise() methods ... [17.10]
 
- rand() ... [17.8]
 
- Reader/writer conflicts; Multi-threading and ... [36.12]
 
- realloc(): reallocating memory; see also Freestore ... [16.5]
 
- Recent changes to this document ... [4]
 
- Reciprocal: Friendship privileges are not ... [14.4]
 
- Redefining non-virtuals ... [23.8], [23.9]
 
- Reference counting
 
 
- Reference semantics ... [31], [31.7], [31.8]
 
- Reference semantics for a hierarchy in reference counting ... [16.24]
 
- Reference semantics in reference counting ... [16.23]
 
- Reference-to-const (Const correctness) ... [18.6]
 
- References contrasted to pointers ... [8.6]
 
- References ... [8]
 
 
- Referent ... [8.2], [8.5], [31.2]
 
- Rely on specification, not implementation ... [21.12]
 
- remembering bad state and std::istream (input/output) ... [15.6]
 
- renew: reallocating memory ... [16.5]
 
- Reply-To: line of a posting (see also Netiquette) ... [5.4]
 
- Reseating a reference ... [8.5], [18.7], [18.8]
 
- Reseating references ... [8.5], [18.7], [18.8]
 
- Resources, External
 
 - Bjarne Stroustrup's web site ... [29.4]
 
 - Borland free C++ compiler ... [38.1]
 
 - British Informatics Olympiad ... [29.2]
 
 - C++ Libraries FAQ ... [37.9]
 
 - Ccdoc ... [40.1]
 
 - Cfront C++ compiler ... [38.13]
 
 - Cygwin ... [38.5]
 
 - Dictionary of Algorithms and Data Structures ... [29.2]
 
 - Digital Mars free C++ compiler ... [38.1]
 
 - DJGPP free C++ compiler ... [38.1]
 
 - Doc++ ... [40.1]
 
 - Doxygen ... [40.1]
 
 - Garbage collectors ... [16.27], [16.28]
 
 - Grammar for C++ ... [38.11]
 
 - Industrial Strength C++ ... [27.13]
 
 - International Obfuscated C Coding Contest ... [27.14]
 
 - Lgrind ... [40.3]
 
 - LLVM C++ compiler ... [38.13]
 
 - Microsoft C++ freely downloadable command-line compiler ... [38.1]
 
 - MinGW ... [38.5]
 
 - MinGW free C++ compiler ... [38.1]
 
 - On floating point arithmetic ... [29.17]
 
 - PERCEPS ... [40.1]
 
 - STL Error-Message filter ... [35.17]
 
 - Techi-Warehouse ... [5.9]
 
 - The Correct C++ Tutorial ... [29.21]
 
 - University of Valladolid Programming Contest Site ... [29.2]
 
 
 
- Resumés ... [5.11]
 
- Resurrecting objects from a stream of bits ... [36.1]
 
- Retrofitting const correctness is hard (Const correctness) ... [18.3]
 
- Return codes
 
 - Avoiding using the return-code-mindset with real exceptions ... [17.13]
 
 - Can't be used from constructors ... [17.2]
 
 - Using try / catch / throw instead ... [17.1]
 
 
 
- Return on investment ... [19.9]
 
- Return type ... [39.9]
 
- Return-by-value optimization ... [10.9]
 
- Returning a reference ... [8.3], [8.4], [10.18]
 
- Returning references ... [8.3], [8.4], [10.18]
 
- Rich-text postings: don't! ... [5.4]
 
- Right/left: moving const as far to the right as possible ... [18.8], [18.9]
 
- Ripple effect: Minimize it! ... [8.7]
 
- ROI ... [19.9]
 
- Rome; When in Rome, do as the Romans ... [17.8]
 
- Row-major order ... [13.11], [13.12]
 
- RRID (Resource Reclamation Is Destruction) (see also under Exceptions) ... [6.18]
 
- RTFM (Acronym) ... [5.1]
 
- rtfm.mit.edu ... [5.14]
 
- Rules of thumb for when and how (see also Operator overloading) ... [13.9]
 
- Rules of thumb ... [27]
 
 - Assignment operators check assignment-to-self ... [12.1], [27.10]
 
 - Assignment operators return *this ... [27.10]
 
 - Assignment operators use const ... [27.10]
 
 - Avoid arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Avoid bizarre syntax ... [27.14]
 
 - Avoid casting Derived** → Base** ... [21.2]
 
 - Avoid casting Foo** → const Foo** ... [18.17]
 
 - Avoid casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Avoid converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Avoid Derived** → Base**, Casting ... [21.2]
 
 - Avoid dynamically typed libraries ... [37.5]
 
 - Avoid explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Avoid explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Avoid Foo** → const Foo**, Casting ... [18.17]
 
 - Avoid hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Avoid hiding nested identifiers ... [39.8]
 
 - Avoid macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Avoid missing virtual on some base class dtors ... [20.7]
 
 - Avoid mixing malloc() and delete ... [16.3]
 
 - Avoid mixing new and free() ... [16.3]
 
 - Avoid mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Avoid mixing realloc() and new ... [16.5]
 
 - Avoid overabundance of try/catch blocks ... [17.13]
 
 - Avoid passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Avoid pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid preprocessor ... [29.8]
 
 - Avoid unnecessary global variables ... [33.2], [39.8]
 
 - Avoid zombie objects ... [17.2]
 
 - Bloodshed, Jihads, and Heat vs. Light ... [27.1]
 
 - Coding standards are never sufficient ... [27.2]
 
 - Coding standards are sometimes necessary ... [27.2]
 
 - const_cast ... [18.13]
 
 - Constructors should throw exceptions on failure ... [17.2]
 
 - Copy constructors use const ... [27.10]
 
 - Declare near first use ... [27.7]
 
 - Design classes from the outside-in ... [13.13]
 
 - Don't base C++ standards on C standards ... [27.3], [34.1]
 
 - Don't test for NULL after new ... [16.6]
 
 - Don't test for NULL before delete ... [16.8]
 
 - Explicitly calling destructors (don't!) ... [11.9]
 
 - Header filename extensions ... [27.9]
 
 - Identifier naming conventions ... [27.12]
 
 - Initialization lists ... [10.6], [26.8], [27.10]
 
 - Law of the Big Three ... [16.17], [27.10]
 
 - Macros that contain if ... [39.4]
 
 - Macros that contain multiple lines ... [39.5]
 
 - Macros that perform token pasting ... [39.6]
 
 - main() returns int, not void ... [5.8], [29.3]
 
 - Multiple inheritance ... [25.4]
 
 - Never throw exceptions from a dtor ... [17.3]
 
 - Operator overloading ... [27.10]
 
 - Prefer ++i over i++ ... [13.15]
 
 - Source filename extensions ... [27.8]
 
 - static at file-scope (don't!) ... [7.5]
 
 - The Ellemtel coding guidelines ... [27.13]
 
 - Todd Hoff's coding guidelines ... [27.13]
 
 - Use a std::string object rather than a char* ... [13.6], [17.5]
 
 - Use delete[] for arrays ... [16.12]
 
 - Use of the ternary ?: operator ... [27.6]
 
 - virtual destructors ... [20.7], [27.10]
 
 - Whitespace pseudo-standards ... [29.10]
 
 
 
- Rules vs. guidelines ... [6.16], [6.17], [9.3], [18.8], [18.9], [19.8], [23.3], [25.2], [25.3], [29.7], [29.11], [36.2], [36.3], [36.5], [36.6]
 
- Runtime crashes without any warning ... [11.5], [11.6], [16.2], [16.3], [16.5], [16.12], [16.13], [17.5], [20.7], [21.1], [21.4], [21.5], [26.11], [34.1], [39.8]
 
- runtime_error (see also under Exceptions) ... [17.6]
 
- Russian translation of this document ... [2.9]
 
"S"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Safety with speed via inline functions ... [9.4]
 
- Schoolwork problems ... [5.2], [5.3]
 
- Screen
 
 
- Security vs. Encapsulation ... [7.7]
 
- Self-assignment ... [12.1], [12.2], [12.3], [27.10]
 
- Self-assignment (see also Operator overloading) ... [12.1], [12.2], [12.3]
 
- Self-cleaning member objects ... [17.4]
 
- Semantics of pointers ... [31.1]
 
- Senior Developers ... [6]
 
 - Business-centricity vs. Techno-centricity ... [6.5]
 
 - C++ is a practical tool ... [6.1]
 
 - C++ is not a perfect tool ... [6.2]
 
 - Length of time needed to learn OO/C++ ... [6.7]
 
 - Size of the installed base ... [6.6]
 
 - Some advantages of Generic Programming ... [6.4]
 
 - Some advantages of OO ... [6.3]
 
 - Standardization of C++ ... [6.12], [6.13]
 
 
 
- Separate compilation model ... [35.12], [35.13], [35.14], [35.15]
 
- Separation of specification from implementation ... [21.12]
 
- Sequence points ... [39.15], [39.16]
 
- Serbian translation of this document ... [2.3]
 
- Serialization ... [36], [36.1]
 
 - Algorithm selection ... [36.2]
 
 - Binary format mechanics ... [36.6]
 
 - Binary format tradeoffs ... [36.3]
 
 - Caveats ... [36.12]
 
 - Cycles within graphs (definition) ... [36.13]
 
 - Graphs of objects (definition) ... [36.13]
 
 - Human-readable format mechanics ... [36.5]
 
 - Human-readable format tradeoffs ... [36.3]
 
 - Infinite recursion ... [36.11]
 
 - Inheritance but no pointers ... [36.8]
 
 - Joins within graphs (definition) ... [36.13]
 
 - No inheritance, no pointers ... [36.7]
 
 - Nodes within graphs (definition) ... [36.13]
 
 - Non-human-readable format mechanics ... [36.6]
 
 - Non-human-readable format tradeoffs ... [36.3]
 
 - Object identity ... [36.11]
 
 - Pointers with cycles or non-trivial joins ... [36.11]
 
 - Pointers with no cycles and no joins ... [36.9]
 
 - Pointers with no cycles and only "trivial" joins ... [36.10]
 
 - Simple types ... [36.4]
 
 - Text format mechanics ... [36.5]
 
 - Text format tradeoffs ... [36.3]
 
 - Trees of objects (definition) ... [36.13]
 
 - Version numbers of instance-data formats ... [36.7]
 
 
 
- Serialize ... [36.8]
 
- set_new_handler ... [16.7]
 
- setprecision ... [35.8]
 
- SFINAE (Substitution Failure Is Not An Error) (see also under Templates) ... [35.11]
 
- Short-circuit operators (see also Operator overloading) ... [13.9]
 
- Short-courses (one 40 hour workweek) ... [6.7]
 
- short: choosing between integer sizes ... [29.5]
 
- Shortest path in C++ ... [5.3]
 
- Simple types, Serialization and ... [36.4]
 
- Sister class: delegate to via virtual inheritance ... [25.10]
 
- Sixty-four bit bytes (on some machines) ... [26.5]
 
- Size of the C++ installed base ... [6.6], [6.8]
 
- Size-cost, and virtual functions ... [20.4]
 
- Size-cost: can effect speed ... [9.3]
 
- Size; One size does not fit all ... [6.16], [6.17], [9.3], [18.8], [18.9], [19.8], [23.3], [25.2], [25.3], [29.7], [29.11], [36.2], [36.3], [36.5], [36.6]
 
- sizeof keyword ... [26.1], [26.2], [26.5], [26.6]
 
- sizeof
 
 
- Slicing ... [17.7], [17.10], [20.8], [22.5], [31.8], [34.4]
 
- Smalltalk ... [30]
 
 - Differences with C++ ... [30.1]
 
 - Dynamic type checking ... [30.2]
 
 - Inheritance differences ... [30.4], [30.5]
 
 - Language wars vs. C++ ... [6.5]
 
 - Not an efficient way to learn OO/C++ ... [28.3]
 
 
 
- Smart pointers ... [13.3], [16.16], [16.22], [17.4]
 
- Smoking out people who pretend to know C++ ... [6.14]
 
- SO (Acronym) ... [5.1]
 
- Software development is decision-making ... [6.16], [9.3], [19.8], [19.9], [25.2], [25.3], [29.7], [29.11], [36.2], [36.3], [36.5], [36.6]
 
- Solaris ... [5.9]
 
- Sometimes "evil" things are the "least bad" alternative ... [6.16]
 
- Sorting in C++ ... [5.3]
 
- Source filename extensions ... [27.8]
 
- Source Styler for C++ (see Pretty printing) ... [40.3]
 
- Space shuttle ... [21.3]
 
- Space vehicle (example) ... [25.5]
 
- Spaces: whitespace standards ... [29.10]
 
- Spam ... [5.13]
 
- Spanning Trees in C++ ... [5.3]
 
- Specialization (see also Inheritance) ... [19.3]
 
- Specialization (see also under Templates) ... [35.7], [35.8]
 
- Specialization of part of a function (see also under Templates) ... [35.9]
 
- Specification vs. implementation with inheritance ... [21.11], [21.12]
 
- Speed (see also under Templates) ... [35.10]
 
- Speed and inline ... [9.3]
 
- Speed of virtual functions ... [20.4]
 
- Spock ... [23.3]
 
- Square root of a negative number ... [29.15]
 
- SSO (Acronym) ... [5.1]
 
- Stack unwinding (see also under Exceptions) ... [11.13], [17.3]
 
- Stack unwinding during exception handling ... [11.13], [17.3]
 
- Standard headers ... [27.4]
 
- Standard library ... [29.9]
 
- Standardization issues ... [5.9], [6.12], [6.13], [30.1]
 
- Standards, coding ... [27]
 
 - Assignment operators check assignment-to-self ... [12.1], [27.10]
 
 - Assignment operators return *this ... [27.10]
 
 - Assignment operators use const ... [27.10]
 
 - Avoid arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Avoid bizarre syntax ... [27.14]
 
 - Avoid casting Derived** → Base** ... [21.2]
 
 - Avoid casting Foo** → const Foo** ... [18.17]
 
 - Avoid casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Avoid converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Avoid Derived** → Base**, Casting ... [21.2]
 
 - Avoid dynamically typed libraries ... [37.5]
 
 - Avoid explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Avoid explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Avoid Foo** → const Foo**, Casting ... [18.17]
 
 - Avoid hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Avoid hiding nested identifiers ... [39.8]
 
 - Avoid macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Avoid missing virtual on some base class dtors ... [20.7]
 
 - Avoid mixing malloc() and delete ... [16.3]
 
 - Avoid mixing new and free() ... [16.3]
 
 - Avoid mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Avoid mixing realloc() and new ... [16.5]
 
 - Avoid overabundance of try/catch blocks ... [17.13]
 
 - Avoid passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Avoid pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid preprocessor ... [29.8]
 
 - Avoid unnecessary global variables ... [33.2], [39.8]
 
 - Avoid zombie objects ... [17.2]
 
 - Bloodshed, Jihads, and Heat vs. Light ... [27.1]
 
 - Coding standards are never sufficient ... [27.2]
 
 - Coding standards are sometimes necessary ... [27.2]
 
 - const_cast ... [18.13]
 
 - Constructors should throw exceptions on failure ... [17.2]
 
 - Copy constructors use const ... [27.10]
 
 - Declare near first use ... [27.7]
 
 - Design classes from the outside-in ... [13.13]
 
 - Don't base C++ standards on C standards ... [27.3], [34.1]
 
 - Don't test for NULL after new ... [16.6]
 
 - Don't test for NULL before delete ... [16.8]
 
 - Explicitly calling destructors (don't!) ... [11.9]
 
 - Header filename extensions ... [27.9]
 
 - Identifier naming conventions ... [27.12]
 
 - Initialization lists ... [10.6], [26.8], [27.10]
 
 - Law of the Big Three ... [16.17], [27.10]
 
 - Macros that contain if ... [39.4]
 
 - Macros that contain multiple lines ... [39.5]
 
 - Macros that perform token pasting ... [39.6]
 
 - main() returns int, not void ... [5.8], [29.3]
 
 - Multiple inheritance ... [25.4]
 
 - Never throw exceptions from a dtor ... [17.3]
 
 - Operator overloading ... [27.10]
 
 - Prefer ++i over i++ ... [13.15]
 
 - Source filename extensions ... [27.8]
 
 - static at file-scope (don't!) ... [7.5]
 
 - The Ellemtel coding guidelines ... [27.13]
 
 - Todd Hoff's coding guidelines ... [27.13]
 
 - Use a std::string object rather than a char* ... [13.6], [17.5]
 
 - Use delete[] for arrays ... [16.12]
 
 - Use of the ternary ?: operator ... [27.6]
 
 - virtual destructors ... [20.7], [27.10]
 
 - Whitespace pseudo-standards ... [29.10]
 
 
 
- Star Trek ... [23.3]
 
 - Good of the many outweighs good of the few ... [16.17]
 
 - Transporter mechanism ... [36.1]
 
 
 
- Static
 
 - Common linker errors due to static data members ... [10.11]
 
 - Define static data members explicitly ... [10.10], [10.11]
 
 - Deinitialization order fiasco ... [10.14]
 
 - Function-scope static variables ... [10.13], [10.14], [10.15], [10.16], [16.23]
 
 - Initialization order fiasco ... [10.12], [10.13], [10.15], [10.16], [26.9]
 
 - Named Constructor Idiom using static ... [10.8], [16.21], [16.24]
 
 - static at file-scope (don't!) ... [7.5]
 
 - Static binding ... [20.2], [20.3], [20.4]
 
 - static create() methods ... [10.8], [16.21], [16.24]
 
 - static member data ... [10.10], [10.11], [10.15], [29.6]
 
 - static member functions ... [10.8], [10.15], [16.21], [16.22], [16.23], [16.24], [23.6], [33.2]
 
 - Static typing ... [20.2], [30.2], [30.3]
 
 
 
- Status bar with MFC ... [38.3]
 
- std and using ... [27.5]
 
- std::
 
 - std::auto_ptr ... [17.4], [23.6]
 
 - std::bad_alloc (see also under Exceptions) ... [16.6], [16.7]
 
 - std::boolalpha ... [35.8]
 
 - std::count ... [27.5]
 
 - std::cout ... [27.5]
 
 - std::endl vs. '\n' for ending output lines ... [15.7]
 
 - std::find_if ... [37.3]
 
 - std::istream and clear() (input/output) ... [15.3]
 
 - std::istream and eof (input/output) ... [15.2], [15.5]
 
 - std::istream and if (std::cin >> foo) (input/output) ... [39.2], [39.3]
 
 - std::istream and if (std::cout << foo) (input/output) ... [39.1]
 
 - std::istream and ignore() (input/output) ... [15.3]
 
 - std::istream and invalid input characters (input/output) ... [15.2], [15.3]
 
 - std::istream and remembering bad state (input/output) ... [15.6]
 
 - std::istream and while (std::cin >> foo) (input/output) ... [15.4]
 
 - std::istream input operator: operator>> ... [15.4], [15.10], [39.2], [39.3]
 
 - std::istream operator>> (input/output) ... [15.10]
 
 - std::istringstream ... [39.2], [39.3]
 
 - std::map<Key,Value> ... [8.7], [34.2]
 
 - std::numeric_limits<T> ... [15.3], [15.6], [35.8]
 
 - std::ostream operator<< (input/output) ... [15.8], [15.9]
 
 - std::ostream operator<< (virtual) (input/output) ... [15.11]
 
 - std::ostream output operator: operator<< ... [8.4], [15.8], [15.9], [39.1]
 
 - std::ostream output operator; virtual: operator<< ... [15.11]
 
 - std::ostringstream ... [35.8], [39.1]
 
 - std::rand() ... [17.8]
 
 - std::runtime_error (see also under Exceptions) ... [17.6]
 
 - std::set_new_handler ... [16.7]
 
 - std::setprecision ... [35.8]
 
 - std::string: Better than char* ... [13.6], [17.5]
 
 - std::stringstream ... [39.1], [39.2], [39.3]
 
 - std::vector ... [27.5]
 
 - std::vector<T> ... [10.5], [16.19], [16.20], [21.4], [21.5], [34.1], [37.3]
 
 - std::vector<T> elements accessed by pointers ... [34.3]
 
 - std::vector<T> storage is contiguous ... [34.3]
 
 
 
- stdio.h (see "cstdio header") ... [15.1]
 
- STL Error-Message filter ... [35.17]
 
- STL ... [37.3]
 
 
- Storage is contiguous in std::vector<T> ... [34.3]
 
- Strange syntax: use only when you must ... [27.14]
 
- Strategy vs. tactics ... [25.1]
 
- Stream of bits, Converting to/from objects ... [36.1]
 
- Striding the cache (see Cache Misses) ... [13.11], [13.12]
 
- String data, serialization in human-readable format ... [36.5]
 
- String data, serialization in non-human-readable format ... [36.6]
 
- string: Better than char* ... [13.6], [17.5]
 
- stringify() ... [35.8], [39.1], [39.3]
 
- stringstream ... [39.1], [39.2], [39.3]
 
- struct keyword ... [7.1], [7.8]
 
- Style guidelines (see Coding standards) ... [27]
 
- Subclass
 
 - Derived classes that aren't subtypes ... [30.5]
 
 - See also Derived classes ... [19.3]
 
 
 
- Subject: line of a posting (see also Netiquette) ... [5.7]
 
- Submarine, Nuclear ... [21.2], [21.3]
 
- Subscript operator comes in pairs: operator[] ... [13.9], [18.12]
 
- Subscript operator for Matrix ... [13.10], [13.11], [13.12]
 
- Subscript operator: operator[] ... [8.3], [13.4], [13.10], [13.11], [13.12]
 
- Substitutability ... [21.3], [21.4], [21.6], [21.7], [21.8], [21.9], [21.11]
 
- Substitution Failure Is Not An Error (see also under Templates) ... [35.11]
 
- Subtle bugs ... [6.15]
 
 - Arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Casting Derived** → Base** ... [21.2]
 
 - Casting Foo** → const Foo** ... [18.17]
 
 - Casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Derived** → Base**, Casting ... [21.2]
 
 - Explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Foo** → const Foo**, Casting ... [18.17]
 
 - Hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Missing virtual on some base class dtors ... [20.7]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Mixing realloc() and new ... [16.5]
 
 - Passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Preprocessor ... [29.8]
 
 - Unnecessary global variables ... [33.2], [39.8]
 
 
 
- Subtypes that aren't derived classes ... [30.5]
 
- Suffixes: numeric literal suffixes ... [29.12]
 
- Superclass (see also Inheritance) ... [19.3]
 
- Symmetry is good, but not the greatest good ... [23.3]
 
- Syntactic sugar ... [13.1]
 
"T"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Tabs: whitespace standards ... [29.10]
 
- Techi-Warehouse ... [5.9]
 
- Techie Weenie ... [6.5], [9.9]
 
- Technical criteria are dominated by business criteria ... [6.5]
 
- Technical issues, Dominated by business issues ... [6.17]
 
- Techniques, Bad ... [6.15]
 
 - Arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Casting Derived** → Base** ... [21.2]
 
 - Casting Foo** → const Foo** ... [18.17]
 
 - Casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Derived** → Base**, Casting ... [21.2]
 
 - Explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Foo** → const Foo**, Casting ... [18.17]
 
 - Hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Missing virtual on some base class dtors ... [20.7]
 
 - Mixing malloc() and delete ... [16.3]
 
 - Mixing new and free() ... [16.3]
 
 - Mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Mixing realloc() and new ... [16.5]
 
 - Passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Preprocessor ... [29.8]
 
 - Unnecessary global variables ... [33.2], [39.8]
 
 
 
- template keyword ... [35.14]
 
- Templates ... [35]
 
 - Basics of templates ... [35.1]
 
 - Class template is a family of classes ... [35.2], [35.12]
 
 - Compile-time ... [35.10]
 
 - Deducing template types ... [35.4]
 
 - Definition vs. declaration ... [35.12], [35.13], [35.14], [35.15]
 
 - Dependent names ... [35.18], [35.19]
 
 - export keyword ... [35.14]
 
 - Forward declarations ... [39.14]
 
 - Friend functions ... [35.16]
 
 - Function overloading and ... [35.11]
 
 - Function template is a family of functions ... [35.3], [35.4], [35.12]
 
 - Genericity ... [35.6]
 
 - Multi-dimensional arrays ... [16.18], [16.19]
 
 - Nondependent names ... [35.18], [35.19]
 
 - Overloading and ... [35.11]
 
 - Parameterized types ... [35.5]
 
 - Performance ... [35.10]
 
 - SFINAE (Substitution Failure Is Not An Error) ... [35.11]
 
 - Specialization ... [35.7], [35.8]
 
 - Specialization of part of a function ... [35.9]
 
 - Speed ... [35.10]
 
 - Substitution Failure Is Not An Error ... [35.11]
 
 - typename keyword ... [16.18], [16.19], [35.2], [35.3], [35.4], [35.12], [35.13], [35.15], [37.3], [39.3]
 
 - Using with built-in/intrinsic types ... [13.1]
 
 
 
- terminate() ... [17.3]
 
- Terminology, Precise use of ... [9.9]
 
- Ternary operator: ?: ... [27.6]
 
- TeX macros for "C++" ... [40.2]
 
- Text format mechanics, Serialization and ... [36.5]
 
- Text format tradeoffs, Serialization and ... [36.3]
 
- Text mode; translations of end-of-line sequences ... [15.12], [15.13]
 
- tgrind (see Pretty printing) ... [40.3]
 
- The Correct C++ Tutorial ... [29.21]
 
- The good of the many outweighs the good of the few ... [23.3]
 
- Thing: Container of Thing vs. of Anything ... [21.3]
 
- "Think" is not a four-letter word ... [6.16], [6.17], [18.9]
 
- Thirty-two bit bytes (on some machines) ... [26.6]
 
- This document ... [3]
 
- this keyword ... [10.7]
 
- this used in constructors ... [10.7]
 
- this() ... [10.3]
 
- Thrashing in demand-paged virtual-memory systems ... [9.3]
 
- Threading, Multi
 
 - Can randomly expose errors ... [16.2]
 
 - Performance tradeoffs ... [36.12]
 
 - Reader/writer conflicts ... [36.12]
 
 - Writer/writer conflicts ... [36.12]
 
 
 
- throw (see also under Exceptions) ... [16.6], [16.7]
 
- throw keyword ... [17.1], [17.9]
 
- throw; (without an exception-object after the throw keyword) (see also under Exceptions) ... [17.9]
 
- throw ... [17]
 
 - Avoid catch-by-pointer (usually) ... [17.7], [17.8]
 
 - Avoid catch-by-value ... [17.7]
 
 - Avoiding an overabundance of try/catch blocks ... [17.13]
 
 - Broken mindset ... [17.12], [17.13]
 
 - Catch-by-pointer, avoid (usually) ... [17.7], [17.8]
 
 - Catch-by-value, avoid ... [17.7]
 
 - Compared to return-codes and if ... [17.1]
 
 - Constructors can throw exceptions ... [17.2]
 
 - Copy ctor must be publicly accessible ... [17.11]
 
 - Destructors ... [11.13], [17.3]
 
 - Eliminate some if statements ... [17.1]
 
 - Example of throw; to re-throw current exception ... [16.10], [17.5], [38.7], [38.8]
 
 - Example of try ... catch ... [16.10], [17.5], [38.7], [38.8]
 
 - Inherit your own exception classes (ultimately) from std::exception ... [17.6]
 
 - Member objects should be self-managing ... [17.4]
 
 - Mindset, right and wrong ... [17.12], [17.13]
 
 - Number of copies made internally ... [17.11]
 
 - Polymorphically throwing ... [17.10]
 
 - Publicly accessible copy constructor ... [17.11]
 
 - RAII (Resource Acquisition Is Initialization) ... [6.18], [17.12], [17.13]
 
 - RRID (Resource Reclamation Is Destruction) ... [6.18]
 
 - Stack unwinding ... [11.13], [17.3]
 
 - std::bad_alloc ... [16.6], [16.7]
 
 - std::runtime_error ... [17.6]
 
 - throw ... [16.6], [16.7]
 
 - throw; (without an exception-object after the throw keyword) ... [17.9]
 
 - Throwing polymorphically ... [17.10]
 
 - What to catch ... [17.7]
 
 - What to throw ... [17.6]
 
 - Wrong mindset ... [17.12], [17.13]
 
 
 
- Throwing polymorphically (see also under Exceptions) ... [17.10]
 
- Thumb, Rules of ... [27]
 
 - Assignment operators check assignment-to-self ... [12.1], [27.10]
 
 - Assignment operators return *this ... [27.10]
 
 - Assignment operators use const ... [27.10]
 
 - Avoid arrays ... [16.17], [17.5], [21.5], [34.1]
 
 - Avoid bizarre syntax ... [27.14]
 
 - Avoid casting Derived** → Base** ... [21.2]
 
 - Avoid casting Foo** → const Foo** ... [18.17]
 
 - Avoid casting pointers ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid char* (use a string-like class instead) ... [13.6], [17.5]
 
 - Avoid converting array-of-Derived → kind-of Array-of-Base ... [21.4]
 
 - Avoid Derived** → Base**, Casting ... [21.2]
 
 - Avoid dynamically typed libraries ... [37.5]
 
 - Avoid explicitly calling destructors (sometimes okay) ... [11.10]
 
 - Avoid explicitly calling destructors on local objects ... [11.5], [11.6]
 
 - Avoid Foo** → const Foo**, Casting ... [18.17]
 
 - Avoid hiding inherited public features ... [21.1], [21.6], [21.7], [21.8], [21.9], [23.9]
 
 - Avoid hiding nested identifiers ... [39.8]
 
 - Avoid macros ... [9.5], [29.11], [30.3], [39.4], [39.5], [39.6]
 
 - Avoid missing virtual on some base class dtors ... [20.7]
 
 - Avoid mixing malloc() and delete ... [16.3]
 
 - Avoid mixing new and free() ... [16.3]
 
 - Avoid mixing new T[n] with delete p ... [16.12], [16.13], [26.11]
 
 - Avoid mixing realloc() and new ... [16.5]
 
 - Avoid overabundance of try/catch blocks ... [17.13]
 
 - Avoid passing array-of-Derived as array-of-Base ... [21.4], [21.5]
 
 - Avoid pointer casts ... [16.25], [18.17], [21.2], [23.12], [27.11], [30.2], [30.3], [37.5]
 
 - Avoid preprocessor ... [29.8]
 
 - Avoid unnecessary global variables ... [33.2], [39.8]
 
 - Avoid zombie objects ... [17.2]
 
 - Bloodshed, Jihads, and Heat vs. Light ... [27.1]
 
 - Coding standards are never sufficient ... [27.2]
 
 - Coding standards are sometimes necessary ... [27.2]
 
 - const_cast ... [18.13]
 
 - Constructors should throw exceptions on failure ... [17.2]
 
 - Copy constructors use const ... [27.10]
 
 - Declare near first use ... [27.7]
 
 - Design classes from the outside-in ... [13.13]
 
 - Don't base C++ standards on C standards ... [27.3], [34.1]
 
 - Don't test for NULL after new ... [16.6]
 
 - Don't test for NULL before delete ... [16.8]
 
 - Explicitly calling destructors (don't!) ... [11.9]
 
 - Header filename extensions ... [27.9]
 
 - Identifier naming conventions ... [27.12]
 
 - Initialization lists ... [10.6], [26.8], [27.10]
 
 - Law of the Big Three ... [16.17], [27.10]
 
 - Macros that contain if ... [39.4]
 
 - Macros that contain multiple lines ... [39.5]
 
 - Macros that perform token pasting ... [39.6]
 
 - main() returns int, not void ... [5.8], [29.3]
 
 - Multiple inheritance ... [25.4]
 
 - Never throw exceptions from a dtor ... [17.3]
 
 - Operator overloading ... [27.10]
 
 - Prefer ++i over i++ ... [13.15]
 
 - Source filename extensions ... [27.8]
 
 - static at file-scope (don't!) ... [7.5]
 
 - The Ellemtel coding guidelines ... [27.13]
 
 - Todd Hoff's coding guidelines ... [27.13]
 
 - Use a std::string object rather than a char* ... [13.6], [17.5]
 
 - Use delete[] for arrays ... [16.12]
 
 - Use of the ternary ?: operator ... [27.6]
 
 - virtual destructors ... [20.7], [27.10]
 
 - Whitespace pseudo-standards ... [29.10]
 
 
 
- to-string conversion; stringify() ... [35.8], [39.1], [39.3]
 
- To-the-power-of operator** (Can't!) ... [13.7]
 
- Todd Hoff's coding guidelines ... [27.13]
 
- toDouble() ... [39.2]
 
- Token pasting via ## ... [39.6]
 
- Token-pasting via NAME2() macro ... [39.6]
 
- Tokenizing ... [36.8]
 
- Tools that generate HTML documentation ... [40.1]
 
- Tools that help you understand error messages ... [35.17]
 
- Top-posting: don't! ... [5.4]
 
- Trademarks ... [1.5]
 
- Tradeoff matrix for Multiple Inheritance ... [25.6]
 
- Training ... [6.7]
 
- Transitivity: Friendship privileges are not ... [14.4]
 
- Translation of the C++ FAQ
 
 
- Translations of end-of-line sequences in text mode ... [15.12], [15.13]
 
- Trees of objects (definition), Serialization and ... [36.13]
 
- Truck and Car example ... [20.6]
 
- try keyword ... [17.1]
 
- try ... [17]
 
 - Avoid catch-by-pointer (usually) ... [17.7], [17.8]
 
 - Avoid catch-by-value ... [17.7]
 
 - Avoiding an overabundance of try/catch blocks ... [17.13]
 
 - Broken mindset ... [17.12], [17.13]
 
 - Catch-by-pointer, avoid (usually) ... [17.7], [17.8]
 
 - Catch-by-value, avoid ... [17.7]
 
 - Compared to return-codes and if ... [17.1]
 
 - Constructors can throw exceptions ... [17.2]
 
 - Copy ctor must be publicly accessible ... [17.11]
 
 - Destructors ... [11.13], [17.3]
 
 - Eliminate some if statements ... [17.1]
 
 - Example of throw; to re-throw current exception ... [16.10], [17.5], [38.7], [38.8]
 
 - Example of try ... catch ... [16.10], [17.5], [38.7], [38.8]
 
 - Inherit your own exception classes (ultimately) from std::exception ... [17.6]
 
 - Member objects should be self-managing ... [17.4]
 
 - Mindset, right and wrong ... [17.12], [17.13]
 
 - Number of copies made internally ... [17.11]
 
 - Polymorphically throwing ... [17.10]
 
 - Publicly accessible copy constructor ... [17.11]
 
 - RAII (Resource Acquisition Is Initialization) ... [6.18], [17.12], [17.13]
 
 - RRID (Resource Reclamation Is Destruction) ... [6.18]
 
 - Stack unwinding ... [11.13], [17.3]
 
 - std::bad_alloc ... [16.6], [16.7]
 
 - std::runtime_error ... [17.6]
 
 - throw ... [16.6], [16.7]
 
 - throw; (without an exception-object after the throw keyword) ... [17.9]
 
 - Throwing polymorphically ... [17.10]
 
 - What to catch ... [17.7]
 
 - What to throw ... [17.6]
 
 - Wrong mindset ... [17.12], [17.13]
 
 
 
- Turkish translation of this document ... [2.10]
 
- Turning off keyboard "echo" ... [15.18]
 
- Tutorials
 
 - The Correct C++ Tutorial ... [29.21]
 
 
 
- Type safety
 
 - Comparison with Smalltalk ... [30.2]
 
 - Const correctness ... [18.2]
 
 - Static vs. dynamic typing ... [20.2]
 
 
 
- typeid keyword ... [34.4]
 
- typename keyword ... [16.18], [16.19], [35.2], [35.3], [35.4], [35.12], [35.13]
 
- typename keyword (see also under Templates) ... [16.18], [16.19], [35.2], [35.3], [35.4], [35.12], [35.13], [35.15], [37.3], [39.3]
 
"U"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Uncompiling executables back into C++ source code ... [38.4]
 
- Undefined behavior ... [18.13], [20.7], [33.4], [39.15]
 
- University of Valladolid Programming Contest Site ... [29.2]
 
- Unix
 
 - Newsgroups specializing in ... [5.9]
 
 - OS-specific questions/answers ... [40.5]
 
 
 
- Unnecessary global variables, evilness of ... [33.2], [39.8]
 
- Unresolved external linker error ... [23.10]
 
- Unserialization ... [36], [36.1]
 
 - Algorithm selection ... [36.2]
 
 - Binary format mechanics ... [36.6]
 
 - Binary format tradeoffs ... [36.3]
 
 - Caveats ... [36.12]
 
 - Cycles within graphs (definition) ... [36.13]
 
 - Graphs of objects (definition) ... [36.13]
 
 - Human-readable format mechanics ... [36.5]
 
 - Human-readable format tradeoffs ... [36.3]
 
 - Infinite recursion ... [36.11]
 
 - Inheritance but no pointers ... [36.8]
 
 - Joins within graphs (definition) ... [36.13]
 
 - No inheritance, no pointers ... [36.7]
 
 - Nodes within graphs (definition) ... [36.13]
 
 - Non-human-readable format mechanics ... [36.6]
 
 - Non-human-readable format tradeoffs ... [36.3]
 
 - Object identity ... [36.11]
 
 - Pointers with cycles or non-trivial joins ... [36.11]
 
 - Pointers with no cycles and no joins ... [36.9]
 
 - Pointers with no cycles and only "trivial" joins ... [36.10]
 
 - Simple types ... [36.4]
 
 - Text format mechanics ... [36.5]
 
 - Text format tradeoffs ... [36.3]
 
 - Trees of objects (definition) ... [36.13]
 
 - Version numbers of instance-data formats ... [36.7]
 
 
 
- Unusual syntax: use only when you must ... [27.14]
 
- Useful; Sometimes "evil" things are ... [6.16]
 
- Usenet newsgroups (see also Newsgroups) ... [5.9]
 
- using keyword ... [23.9], [27.5]
 
- using namespace std; ... [27.5]
 
- using std::cout; ... [27.5]
 
- Using with built-in/intrinsic types (see also under Templates) ... [13.1]
 
- using-declaration ... [27.5]
 
- using-directive ... [27.5]
 
"V"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- v-pointer ... [20.3], [20.4], [38.9]
 
- v-table ... [20.3], [20.4], [21.4], [23.10], [38.9]
 
- Value semantics ... [31], [31.7], [31.8]
 
- Variables, Global: Just Say No! ... [33.2], [39.8]
 
- VC++
 
 
- vector ... [27.5]
 
- vector<T> ... [10.5], [16.19], [16.20], [21.4], [21.5], [34.1], [37.3]
 
- vector<T> elements accessed by pointers ... [34.3]
 
- vector<T> storage is contiguous ... [34.3]
 
- Vehicle example ... [20.6]
 
- Vehicle, Multiple inheritance example ... [25.5], [25.7]
 
- Vehicle: Parking lot of Car vs. of Vehicle ... [21.3]
 
- Version numbers of instance-data formats, Serialization and ... [36.7]
 
- Version numbers to the "language" ... [38.12]
 
- Virtual Call During Initialization Idiom ... [23.6]
 
- Virtual Constructor Idiom ... [16.24], [17.10], [20.8], [22.5]
 
- Virtual Friend Function Idiom ... [15.11]
 
- Virtual inheritance ... [25]
 
 
- virtual keyword ... [16.24], [17.10], [20.7], [25.9]
 
- virtual
 
 - Abstract functions ... [22.3], [22.4]
 
 - Binary compatibility of virtual functions ... [38.9]
 
 - Calling virtual functions from constructors ... [10.7], [23.5]
 
 - Calling virtual functions from constructors: idiom ... [23.6]
 
 - Calling virtual functions from destructors ... [23.5], [23.7]
 
 - Calling virtual functions from non-virtuals in the base class ... [23.1], [23.2]
 
 - Defining abstract functions ... [22.4], [33.10]
 
 - Defining pure virtual functions ... [22.4], [33.10]
 
 - Destructors ... [11.12], [16.24], [20.8], [21.2], [33.10]
 
 - Inlining virtual functions ... [31.5], [31.6]
 
 - Non-abstract functions are like default code ... [20.6]
 
 - Non-pure virtual functions are like default code ... [20.6]
 
 - Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals Idiom ... [23.3]
 
 - Pure virtual functions ... [22.3], [22.4]
 
 - Redefining non-virtual member functions ... [23.8], [23.9]
 
 - V-pointer (virtual pointer) ... [20.3], [20.4], [38.9]
 
 - V-table (virtual table) ... [20.3], [20.4], [21.4], [23.10], [38.9]
 
 - Virtual Constructor Idiom ... [16.24], [17.10], [20.8], [22.5]
 
 - virtual data ... [31.2], [31.3]
 
 - virtual destructor coding standard ... [20.7], [27.10]
 
 - Virtual Friend Function Idiom ... [14.3], [15.11]
 
 - virtual functions ... [20]
 
 - virtual functions are central to OO ... [6.9]
 
 - virtual functions let old code call new code ... [6.10]
 
 - virtual functions, example of ... [20.6]
 
 - virtual functions, purpose of ... [20.1]
 
 
 
- Visitor pattern ... [36.11]
 
- Visual Basic vs. C++ ... [6.5]
 
- Visual C++
 
 
- void main() ← NO!!! (use void main()) ... [5.8], [29.3]
 
- void*
 
 - Any data-pointer convertible to ... [26.7]
 
 - Can't convert pointer-to-function to void* ... [33.8]
 
 - Can't convert pointer-to-member to void* ... [33.7]
 
 - Returned from malloc() ... [16.4]
 
 
 
"W"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Wannabes, Pathetic ... [9.9]
 
- Wannabes: smoking out people who pretend to know C++ ... [6.14]
 
- Wars ... [27.1]
 
- Water vehicle (example) ... [25.5], [25.7]
 
- Weenie ("Techie Weenie") ... [6.5], [9.9]
 
- What to catch (see also under Exceptions) ... [17.7]
 
- What to throw (see also under Exceptions) ... [17.6]
 
- When in Rome, do as the Romans ... [17.8]
 
- Where do I start? ... [29.2]
 
- Which operators can be overloaded (see also Operator overloading) ... [13.5]
 
- Which operators should be overloaded (see also Operator overloading) ... [13.8]
 
- while (std::cin >> foo) and std::istream (input/output) ... [15.4]
 
- Whitespace standards ... [29.10]
 
- Windows, Microsoft
 
 - Binary mode for opening streams ... [15.12]
 
 - Binary mode for std::cin and std::cout ... [15.13]
 
 - Newsgroups specializing in ... [5.9]
 
 - OS-specific questions/answers ... [40.5]
 
 
 
- Writer/writer conflicts; Multi-threading and ... [36.12]
 
- Wrong mindset (see also under Exceptions) ... [17.12], [17.13]
 
- Wrong/naive beliefs
 
 - "Always" and "Never" rules ... [23.3]
 
 - "Evil" things should never be used ... [6.15]
 
 - Always name numeric literals ... [29.11]
 
 - Friendship breaks encapsulation ... [14.2]
 
 - inline functions always improve performance ... [9.3]
 
 - Methods always better than friend-functions ... [15.9]
 
 - Multi-line macros simply use {...} ... [39.5]
 
 - Never use #define ... [29.7]
 
 - Never use multiple-inheritance ... [25.2], [25.3]
 
 - protected data is evil ... [19.8]
 
 - Software has rules that always apply ... [6.16]
 
 - There exists a purely technical definition of "good" ... [6.17]
 
 - Token-pasting doesn't require two levels of macros ... [39.6]
 
 
 
- WWW sites of this document ... [2.1]
 
"X"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
"Y"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
"Z"  [ Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Bottom]
- Zero-parameter constructors ... [10.4]
 
- Zombie objects ... [17.2]
 
 E-mail the author
[ C++ FAQ Lite
| Table of contents
| Subject index
| About the author
| ©
| Download your own copy ]
Revised Mar 1, 2006