Index
 , #
 , $
 , %
 , &
 , >
 , <
 , (
 , *
 , +
 , -
 , .
 , /
 , :
 , =
 , A
 , B
 , C
 , D
 , E
 , F
 , G
 , H
 , I
 , J
 , K
 , L
 , M
 , N
 , O
 , P
 , Q
 , R
 , S
 , T
 , U
 , V
 , W
 , X
 , Z
 , [
 , ^
 , |
 , ~
!, 1
!=, 1
#, preprocessor stringize operator, 1
#define, 1, 2, 3, 4
#endif, 1, 2
#ifdef, 1, 2
#ifndef, 1
#include , 1
#undef, 1
$<, in makefiles, 1
%, 1
&, 1, 2
&&, logical and, 1, 2
&, bitwise and, 1
&= bitwise, 1
>, 1
- >>, 1
-  iostreams
-  operator, 1
 
 overloading, 1>>=, 1
>=, 1
<, 1
- <<, 1
-  overloading for iostreams, 1
<<=, 1
<=, 1
( ), overloading the function call operator, 1
- *, 1
-  overloaded operator, 1, 2
 pointer dereference, 1
- +, 1, 2
-  with pointers, 1
- ++, 1
-  with pointers, 1
-, 1, 2
- ->
-  overloading the smart pointer operator, 1
 struct member selection via pointer, 1->*, overloading, 1
-, with pointers, 1
--, 1
--, with pointers, 1
. member selection operator, 1
- ... variable argument list, 1
-  varargs, 1
/, 1
: ternary if-else, 1
- ::, 1, 2
-  scope resolution operator, and namespaces, 1
- =, 1
-  operator
-  as a private function, 1
 
 automatic creation, 1 operator, as a private function, 1
 overloading, 1==, 1, 2
abort( ), 1
- abstract
-  base classes and pure virtual functions, 1
 data type, 1, 2abstraction, 1
- access
-  control, 1
-  run-time, 1
 function, 1
-  specifiers, 1, 2
-  and object layout, 1
 order for, 1accessors, 1
actor, in use cases, 1
addition (+), 1
- address
-  const, 1
 each object must have a unique address, 1
 element, 1
 function, 1, 2
 memory, 1
 object, 1
 pass as const references, 1
 passing and returning with const, 1
 struct object, 1address-of (&), 1
- aggregate, 1
-  const aggregates, 1
-  initialization, 1, 2
-  and structures, 1
aggregation, 1
algorithms, Standard C++ Library, 1
- aliasing
-  namespace, 1
 solving with reference counting and copy-on-write, 1Allison, Chuck, 1, 2, 3
- allocation
-  dynamic memory allocation, 1, 2
 memory, and efficiency, 1
 storage, 1alternate linkage specification, 1
- ambiguity, 1
-  during automatic type conversion, 1
 with namespaces, 1- analysis
-  and design, object-oriented, 1
 paralysis, 1
 requirements analysis, 1- and
-  & bitwise, 1, 2
 && logical, 1, 2
 && logical and, 1and_eq, &= (bitwise and-assignment), 1
anonymous union, 1
ANSI Standard C++, 1
argc, 1
- arguments
-  argument-passing guidelines, 1
 command line, 1, 2
 const, 1
 constructor, 1
-  default, 1, 2, 3
-  argument as a flag, 1
destructor, 1
 empty argument list, C vs. C++, 1
 function, 1, 2
 indeterminate list, 1
 macro, 1
 mnemonic names , 1
 name decoration, 1
 overloading vs. default arguments, 1
 passing, 1
 placeholder, 1
 preferred approach to argument passing, 1
 references, 1
 return values, operator overloading, 1
 trailing and defaults, 1
 unnamed, 1
 variable argument list, 1, 2
 without identifiers, 1argv, 1
arithmetic, pointer, 1
- array, 1
-  automatic counting, 1
 bounds-checked, using templates, 1
 calculating size, 1
 definition, limitations, 1
 indexing, overloaded operator [], 1
 initializing to zero, 1
 inside a class, 1
 making a pointer look like an array, 1
 new & delete, 1
 of pointers, 1
 of pointers to functions , 1
 off-by-one error, 1
 overloading new and delete for arrays, 1
 pointers and, 1
 static, 1
 static initialization, 1asctime( ), 1
- assembly-language
-  asm in-line assembly-language keyword, 1
 CALL, 1
 code for a function call, 1
 code generated by a virtual function, 1
 RETURN, 1- assert( )
-  macro in Standard C, 1
- assert( )
-  macro in Standard C, 1, 2
- assignment, 1, 2
-  disallowing, 1
 memberwise, 1, 2
 operator, 1
 overloading, 1
 pointer, const and non-const, 1
 self-assignment in operator overloading, 1- assure( ), 1
-  from require.h, 1
atexit( ), 1
atof( ), 1, 2
atoi( ), 1
atol( ), 1
auto keyword, 1, 2
auto-decrement operator, 1
auto-increment operator, 1, 2
- automatic
-  counting, and arrays, 1
 creation of operator=, 1
 destructor calls, 1
-  type conversion, 1, 2
-  pitfalls, 1
 preventing with the keyword explicit, 1variable, 1, 2, 3
backslash, 1
backspace, 1
bad_alloc, 1
- base
-  abstract base classes and pure virtual functions, 1
 base-class interface, 1
 fragile base-class problem, 1
 types, 1
 virtual keyword in derived-class declarations, 1basic concepts of object-oriented programming (OOP), 1
BASIC language, 1, 2
Beck, Kent, 1
behavior, 1
- binary operators, 1
-  examples of all overloaded, 1
 overloaded, 1- binding
-  dynamic binding, 1
 early, 1, 2
 function call binding, 1, 2
 late, 1, 2
 run-time binding, 1bit bucket, 1
bit-shifting, 1
bitand, & (bitwise and), 1
bitcopy, 1
bitcopy, vs. initialization, 1
bitor, | (bitwise or), 1
- bitwise
-  and operator &, 1, 2
 const, 1
 exclusive-or, xor ^, 1
 explicit bitwise and logical operators, 1
 not ~, 1
 operators, 1
 or operator |, 1, 2bloat, code, 1
- block
-  access, 1
 and storage allocation, 1
 definition, 1Booch, Grady, 1
- book
-  design & production, 1
 errors, reporting, 1bool, 1, 2
- Boolean, 1, 2, 3
-  algebra, 1
 and floating point, 1
 bool, true and false, 1bounds-checked array, with templates, 1
break, keyword, 1
bucket, bit, 1
- bugs
-  common pitfalls with operators, 1
 finding, 1
 from casts, 1
 with temporaries, 1- built-in type, 1
-  basic, 1
 initializer for a static variable , 1
-  pseudoconstructor
-  calls for, 1
 form for built-in types, 1byte, 1
- C, 1
-  #define, 1
 backward compatibility, 1
 C programmers learning C++, 1
 C++ compatibility, 1
 compiling with C++, 1
 concepts, 1
 const, 1
 converting from C to C++, 1, 2
 difference with C++ when defining variables, 1
 empty argument list, C vs. C++, 1
 finding problems in old code, 1
 function library, 1
 fundamentals, 1
 heap, 1
 hole in the type system, via void*, 1
 ISO Standard C, 1
 libraries, 1, 2
 linkage, 1
 linking compiled C code with C++, 1
 name collisions, 1
 operators and their use, 1
 passing and returning variables by value, 1
 pitfalls, 1
 preprocessor, 1
 safety hole during linking, 1
-  Standard library function
-  abort( ), 1
 atexit( ), 1
 exit( ), 1 Thinking in C CD ROM, 1- C++
-  automatic typedef for struct and class, 1
 C compatibility, 1
 C programmers learning C++, 1
 cfront, original C++ compiler, 1
 compiling C, 1
 converting from C to C++, 1, 2
 data, 1
 difference with C when defining variables, 1
 efficiency, 1
 empty argument list, C vs. C++, 1
 explicit casts, 1
 finding C errors by recompiling in C++, 1
 first program, 1
 GNU Compiler, 1
 hybrid object-oriented language, and friend, 1
 implicit structure address passing, 1
 linking compiled C code with C++, 1
 major language features, 1
 meaning of the language name, 1
 object-based C++, 1
 one definition rule, 1
 operators and their use, 1
 programming guidelines, 1
 Standard C++, 1
 Standards Committee, 1
 strategies for transition to, 1
 stricter type checking, 1
 strongly typed language, 1
 why it succeeds, 1c-v qualifier, 1
calculating array size, 1
CALL, assembly-language, 1
calling a member function for an object , 1
calloc( ), 1, 2, 3
Carolan, John, 1
Carroll, Lewis, 1
case, 1
cassert standard header file, 1
- cast, 1, 2, 3, 4, 5, 6
-  C++ explicit casts, 1
 casting away constness, 1
 casting void pointers, 1
 const_cast, 1
 explicit cast for upcasting, 1
 explicit keyword, 1
 operators, 1
 pointer assignment, 1
 reinterpret cast, 1
 static_cast, 1cat, Cheshire, 1
catch clauses, 1
- CD ROM
-  seminars on CD-ROM from MindView, 1
 Thinking in C, Foundations for Java & C++ (packaged with book), 1, 2, 3cfront, original C++ compiler, 1
chapter overviews, 1
- char, 1, 2, 3
-  sizeof, 1
- character, 1
-  array literals, 1
 character array concatenation, 1
 constants, 1characteristics, 1
check for self-assignment in operator overloading, 1
Cheshire cat, 1
cin, 1
clashes, name, 1
- class, 1, 2, 3
-  abstract base classes and pure virtual functions, 1
 adding new virtual functions in the derived class, 1
 aggregate initialization, 1
 class definition and inline functions, 1
 compile-time constants inside, 1, 2, 3
 composition, and copy-constructor, 1
 const and enum in, 1
 container class templates and virtual functions, 1
 creators, 1
-  declaration, 1
-  of a nested friend class, 1
defining the interface, 1
 definition, 1
 difference between a union and a class, 1
 duplicate class definitions and templates, 1
 fragile base-class problem, 1
 generated by macro, 1
 generated classes for templates, 1
 handle class, 1
-  inheritance
-  and copy-constructor, 1
 diagrams, 1 initialization, memberwise, 1
 instance of, 1
 keyword, 1
 local, 1
-  nested, 1
-  iterator, 1, 2
overloading new and delete for a class, 1
 pointers in, and overloading operator=, 1
 static class objects inside functions, 1
 static data members, 1
 static member functions, 1
 templates, 1
 using const with, 1class-responsibility-collaboration (CRC) cards, 1
- cleanup, 1, 2
-  automatic destructor calls with inheritance and composition, 1
 initialization and cleanup on the heap, 1client programmer, 1, 2
- code
-   source availability, 1
  table-driven, 1
 assembly for a function call, 1
 bloat, 1
 comment tags in listings, 1
 consulting, mentoring, and design and code walkthroughs from MindView, 1
 generator, 1
-  organization, 1
-  header files, 1
program structure when writing code, 1
 re-use, 1collection, 1, 2
collector, garbage, 1
collision, linker, 1
comma operator, 1, 2
- command line, 1
-  arguments, 1
- comment tag
-  for linking, 1
 in source-code listings, 1comments, makefile, 1
committee, C++ Standards, 1
common interface, 1
compaction, heap, 1
- compatibility
-  C & C++, 1
 with C, 1- compilation
-  needless, 1
 process, 1
 separate, 1
 separate, and make, 1compile time constants, 1
- compiler, 1, 2
-  creating default constructor, 1
 original C++ compiler cfront, 1
 running, 1
 support, 1compiling C with C++, 1
compl, ~ ones complement, 1
- complicated
-  declarations & definitions, 1
 expressions, and operator overloading, 1- composite
-  array, 1
 type creation, 1- composition, 1, 2, 3
-  combining composition & inheritance, 1
 copy-constructor, 1
 member object initialization, 1
 vs. inheritance, 1, 2, 3concatenation, character array, 1
concept, high, 1
conditional operator, 1
conditional, in for loop, 1
- const, 1, 2
-  address of, 1
 aggregates, 1
 casting away, 1
 character array literals, 1
 compile-time constants in classes, 1
 const reference function arguments, 1
 correctness, 1
 enum in classes, 1
 evaluation point of, 1
 extern, 1
 function arguments and return values, 1
 in C, 1
 initializing data members, 1
 logical, 1
-  member function, 1
-  and objects, 1
mutable, 1
 pass addresses as const references, 1
 pointer to const, 1
 pointers, 1
-  reference, 1, 2
-  and operator overloading, 1
-  return by value as const, 1
-  and operator overloading, 1
safety, 1
 temporaries are automatically const, 1- constant, 1
-  character, 1
-  compile-time, 1
-  inside classes, 1
folding, 1, 2
 named, 1
 templates, constants in, 1
 values, 1- constructor, 1, 2, 3, 4
-  arguments, 1
 automatic type conversion, 1
 behavior of virtual functions inside constructors, 1
-  copy-constructor, 1, 2, 3, 4, 5
-  alternatives to, 1
 vs. operator=, 1 creating a new object from an existing object, 1
-  default, 1, 2, 3, 4, 5
-  inheritance, 1
 synthesized by the compiler, 1 doesn’t automatically inherit, 1
 efficiency, 1
 global object, 1
 initialization and cleanup on the heap, 1
-  initializer list, 1, 2, 3
-  pseudoconstructors, 1
inline, 1
 installing the VPTR, 1
 memberwise initialization, 1
 name, 1
 new operator, memory exhaustion, 1
 order of construction with inheritance, 1
-  order of constructor calls, 1
-  and destructor calls, 1
overloading, 1, 2
 private, 1
 pseudo-constructor, 1
 return value, 1
 tracking creations and destructions, 1
 virtual functions & constructors, 1const_cast, 1
consulting, mentoring, and design and code walkthroughs from MindView, 1
- container, 1, 2
-  container class templates and virtual functions, 1
 delete, 1
 iterators, 1
 new, delete, and containers, 1
 ownership, 1, 2, 3
 polymorphism , 1
 Standard C++ Library, 1
 vector, 1context, and overloading, 1
continuation, namespace, 1
continue, keyword, 1
- control
-  access, 1, 2
-  run-time, 1
 access specifiers, 1
 expression, used with a for loop, 1- controlling
-  execution, 1
 linkage, 1- conversion
-  automatic type conversion, 1
 narrowing conversions, 1
 pitfalls in automatic type conversion, 1
 preventing automatic type conversion with the keyword explicit, 1
 to numbers from char*, 1converting from C to C++, 1, 2
- copy-constructor, 1, 2, 3, 4, 5, 6, 7
-  alternatives, 1
 composition, 1
 default, 1
 inheritance, 1
 private, 1, 2
 upcasting and the copy-constructor, 1
 vs. operator=, 1copy-on-write (COW), 1
copying pointers inside classes, 1
copyright notice, source code, 1
correctness, const, 1
costs, startup, 1
- counting
-  automatic, and arrays, 1
 reference, 1cout, 1, 2
cover design, book, 1
CRC, class-responsibility-collaboration cards, 1
- creating
-  functions in C and C++, 1
 new object from an existing object, 1
 objects on the heap, 1crisis, software, 1
cstdlib standard header file, 1
cstring standard header file, 1
- data
-  defining storage for static members, 1
 initializing const members, 1
 static area, 1
 static members inside a class, 1- data type
-  abstract, 1, 2
 built-in, 1
 equivalence to class, 1
 user-defined, 1- debugging, 1
-  assert() macro, 1
 flags, 1
 preprocessor flags, 1
 require.h, 1
 run-time, 1
 using the preprocessor, 1decimal, 1
- declaration, 1, 2
-  all possible combinations, 1
 analyzing complex, 1
 and definition, 1
-  class, 1
-  nested friend, 1
const, 1
 forward, 1
-  function, 1, 2, 3
-  declaration syntax, 1
 not essential in C, 1 header files, 1, 2
 structure, 1
 using, for namespaces, 1
-  variable
-  declaration syntax, 1
 point of declaration & scope, 1-  virtual, 1
-  base-class declarations, 1
 derived-class declarations, 1- decoration, name, 1, 2, 3, 4
-  overloading, 1
- decoupling, 1
-  via polymorphism, 1
- decrement, 1, 2
-  and increment operators, 1
 overloading operator, 1- default
-  argument, 1, 2, 3
-  as a flag, 1
 
 vs. overloading, 1-  constructor, 1, 2, 3, 4, 5
-  inheritance, 1
copy-constructor, 1
 default values in templates, 1
 keyword, 1- defining
-  function pointer, 1
 initializing at the same time, 1
 initializing variables, 1
-  variable, 1
-  anywhere in the scope, 1
- definition, 1
-  array, 1
 block, 1
 class, 1
 complex function definitions, 1
 const, 1
 declaration, 1
 duplicate class definitions and templates, 1
 formatting pointer definitions, 1
 function, 1
 non-inline template member function definitions, 1
 object, 1
 pure virtual function definitions, 1
 storage for static data members, 1
 structure definition in a header file, 1- delete, 1, 2, 3
-  calling delete for zero, 1
 delete-expression, 1, 2
 keyword, 1
 multiple deletions of the same object, 1
-  new
-  and containers, 1
 for arrays, 1-  overloading new and delete, 1
-  array, 1
 class, 1
 global, 1 void*, deleting is a bug, 1
 zero pointer, 1Demarco, Tom, 1
- dependency
-  makefile, 1
 static initialization, 1deprecation, of ++ with a bool flag, 1
- dereference
-  *, 1
 dereferencing function pointers, 1
 pointer, 1- derived
-  adding new virtual functions in the derived class, 1
 types, 1
 virtual keyword in derived-class declarations, 1- design
-  analysis and design, object-oriented, 1
-  book
-  cover, 1
 design and production, 1 consulting, mentoring, and design and code walkthroughs from MindView, 1
 five stages of object design, 1
 inlines, 1
 mistakes, 1
 pattern, iterator, 1
 patterns, 1, 2- destructor, 1
-  automatic destructor calls, 1
-  with inheritance and composition, 1
 doesn’t automatically inherit , 1
 explicit destructor call, 1
 initialization and cleanup on the heap, 1
 inlines, 1
 order of constructor and destructor calls, 1
 pure virtual destructor, 1
 scope, 1
 static objects, 1
 tracking creations and destructions, 1
 virtual destructor, 1, 2, 3, 4
 virtual function calls in destructors, 1development, incremental, 1
- diagram
-  class inheritance diagrams, 1
 inheritance, 1
 use case, 1- directive
-  preprocessor, 1
-  using, namespaces, 1, 2
-  header files, 1
directly accessing structure, 1
disallowing assignment, 1
dispatching, double/multiple, 1
division (/), 1
do-while, 1
- double, 1
-  dispatching, and multiple dispatching, 1
 double precision floating point, 1
 internal format, 1- downcast
-  static_cast, 1
 type-safe, 1duplicate class definitions and templates, 1
- dynamic
-  binding, 1
 memory allocation, 1, 2
 object creation, 1, 2, 3, 4
 type checking, 1dynamic_cast, 1
early binding, 1, 2, 3, 4
edition, 2nd, what’s new in, 1
- efficiency, 1
-  C++, 1
 constructor, 1
 creating and returning objects, 1
 inlines, 1
 memory allocation, 1
 references, 1
 trap of premature optimization, 1
 virtual functions, 1elegance, in programming, 1
Ellis, Margaret, 1
else, 1
- embedded
-  object, 1
 systems, 1encapsulation, 1, 2
end sentinel, iterator, 1, 2, 3
- enum
-  and const in classes, 1
 clarifying programs with, 1
 hack, 1
 incrementing, 1
 keyword, 1
 type checking, 1
 untagged, 1, 2- equivalence, 1
-  ==, 1
- error
-  exception handling, 1
 off-by-one, 1
 preventing with common header files, 1
 reporting errors in book, 1
 structure redeclaration, 1escape sequences, 1
evaluation order, inline, 1
evolution, in program development, 1
- exception handling, 1, 2
-  simple use, 1
- executing code
-  after exiting main( ), 1, 2
 before entering main( ), 1- execution
-  controlling, 1
 point, 1exercise solutions, 1
exit( ), 1, 2
- explicit
-  cast, 1
-  C++, 1
 
 for upcasting, 1 keyword to prevent automatic type conversion, 1- exponential, 1
-  notation, 1
exponentiation, no operator, 1
expressions, complicated, and operator overloading, 1
extending a class during inheritance, 1
extensible program, 1
- extern, 1, 2, 3, 4, 5, 6, 7
-  const, 1, 2
 to link C code, 1- external
-  linkage, 1, 2, 3, 4
 references, during linking, 1extractor and inserter, overloading for iostreams, 1
Extreme Programming (XP), 1, 2, 3
factory, design pattern, 1
- false, 1, 2, 3
-  and true, in conditionals, 1
 bool, true and false, 1fan-out, automatic type conversion, 1
Fibonacci, 1
fibonacci( ), 1
- file
-  header, 1, 2, 3
-  code organization, 1
 
 const, 1
 namespaces, 1 names, 1
 reading and writing, 1
 scope, 1, 2, 3
 static, 1, 2, 3, 4
 structure definition in a header file, 1flags, debugging, 1
- floating point
-  float, 1, 2
 float.h, 1
 internal format, 1
 number size hierarchy, 1
 numbers, 1, 2
 true and false, 1- for
-  defining variables inside the control expression, 1
 loop, 1, 2
 loop counter, defined inside control expression, 1
 variable lifetime in for loops, 1formatting pointer definitions, 1
- forward
-  declaration, 1
 reference, inline, 1Fowler, Martin, 1, 2, 3
fragile base-class problem, 1
fragmentation, heap, 1, 2
free store, 1
free( ), 1, 2, 3, 4, 5
free-standing reference, 1
- friend, 1, 2
-  declaration of a nested friend class, 1
 global function, 1
 injection into namespace, 1
 member function, 1
 nested structure, 1
 structure, 1fstream, 1
- function, 1
-  abstract base classes and pure virtual functions, 1
 access, 1
 adding more to a design, 1
 adding new virtual functions in the derived class, 1
 address, 1, 2
-  argument, 1
-  const, 1
 const reference , 1
 reference, 1 array of pointers to, 1
-  assembly-language code generated
-  function call, 1
 virtual function call, 1 binding, for a function call, 1, 2
 body, 1
 C library, 1
 call operator( ), 1
 call overhead, 1, 2
 called for side effect, 1
 complicated function definitions, 1
 constructors, behavior of virtual functions inside, 1
 creating, 1
-  declaration, 1, 2, 3
-  not essential in C, 1
 required, 1
 syntax, 1 definition, 1
 empty argument list, C vs. C++, 1
 expanding the function interface, 1
-  global, 1
-  friend, 1
helper, assembly, 1
-  inline, 1, 2, 3
-  header files, 1
local class (class defined inside a function), 1
-  member function, 1, 2
-  calling
-  a member function, 1
 
 another member function from within a member function, 1
 base-class functions, 1 const, 1, 2
 friend, 1
 inheritance and static member functions, 1
 overloaded operator, 1
 selection, 1 objects, 1
-  overloading, 1
-  operator, 1
 using declaration, namespaces, 1 overriding, 1
 pass-by reference & temporary objects, 1
-  pointer
-  defining, 1
 to member function, 1
 using a function pointer, 1 polymorphic function call, 1
 prototyping, 1
 pure virtual function definitions, 1
 redefinition during inheritance, 1
-  return value
-  by reference, 1
 returning a value, 1
 type, 1
 void, 1 signature, 1
 stack frame for a function call , 1
-  static
-  class objects inside functions, 1
 member, 1, 2, 3
 objects inside functions, 1
 variables inside functions, 1 templates, 1
 type, 1
 unique identifier for each, 1
 variable argument list, 1
-  virtual function, 1, 2
-  constructor, 1
 overriding, 1
 picturing, 1
garbage collector, 1, 2
generic algorithm, 1
get and set functions, 1
get( ), 1
- getline( )
-  and string, 1
 from iostreams library, 1Glass, Robert, 1
- global
-  friend function, 1
 functions, 1
 new and delete, overloading, 1
 object constructor, 1
 operator, overloaded, 1
 scope resolution, 1
 static initialization dependency of global objects, 1
 variables, 1GNU C++, 1
Gorlen, Keith, 1
- goto, 1, 2, 3
-  non-local, 1
- greater than
-  >, 1
 or equal to (>=), 1guaranteed initialization, 1, 2
guards, include, on header files, 1
- guidelines
-  argument passing, 1
 C++ programming guidelines, 1
 object development, 1
hack, enum, 1
handle classes, 1, 2
- has-a, 1
-  composition, 1
- header file, 1, 2, 3, 4, 5, 6, 7
-  code organization, 1
 enforced use of in C++, 1
 formatting standard, 1
 include guards, 1
 inline definitions, 1
 internal linkage, 1
 namespaces, 1
 new file include format, 1
 order of inclusion, 1
 templates, 1, 2
 using directives, 1
importance of using a common header file, 1
multiple inclusion, 1
structure definition in a header file, 1- heap, 1, 2
-  C heap, 1
 compactor, 1
 creating objects, 1
 fragmentation, 1, 2
 guaranteeing that all objects are created on the heap, 1
-  storage allocation, 1
-  simple example system, 1
helper function, assembly, 1
hexadecimal, 1
- hiding
-  function names inside a struct, 1
 implementation, 1, 2, 3, 4
-  names
-  during inheritance, 1
 during overloading, 1 variables from the enclosing scope, 1hierarchy, singly-rooted/object-based, 1, 2
high concept, 1
high-level assembly language, 1
hostile programmers, 1
- hybrid
-  C++, hybrid object-oriented language, and friend, 1
 object-oriented programming language, 1
- identifier
-  unique for each function, 1
 unique for each object, 1IEEE standard for floating-point numbers, 1, 2
- if-else, 1
-  defining variables inside the conditional, 1
 statement, 1
 ternary ?:, 1ifstream, 1, 2
- implementation, 1, 2
-  and interface, separating, 1, 2, 3, 4
-  hiding, 1, 2, 3, 4
-  compile-time only, 1
implicit type conversion, 1
in situ inline functions, 1
in-memory compilation, 1
- include, 1
-  include guards, in header files, 1, 2
 new include format, 1incomplete type specification, 1, 2
- increment, 1, 2
-  and decrement operators, 1
 incrementing and enumeration, 1
 overloading operator ++, 1- incremental
-  development, 1
 programming, 1indeterminate argument list, 1
- indexing
-  array, using [ ], 1, 2
 zero, 1- inheritance, 1, 2, 3, 4
-  choosing composition vs. inheritance, 1
 class inheritance diagrams, 1
 combining composition & inheritance, 1
 copy-constructor, 1
 diagram, 1
 extending a class during, 1
 extensibility, 1
 function redefinition, 1
 initialization, 1
 is-a, 1, 2
 multiple, 1, 2, 3, 4, 5
 name hiding, 1
 operator overloading & inheritance, 1
 order of construction, 1
 private inheritance, 1
 protected inheritance, 1
 public inheritance, 1
 static member functions, 1
 subtyping, 1
 virtual function calls in destructors, 1
 vs. composition, 1, 2
 VTABLE, 1- initialization, 1, 2
-  aggregate, 1, 2
-  array
-  elements, 1
 to zero, 1 const data members, 1
 const inside class, 1
 constructor, 1
 constructor initializer list, 1, 2, 3
 definition, simultaneous, 1
 for loop, 1, 2
-  guaranteed, 1, 2
-  during inheritance, 1
initialization and cleanup on the heap, 1
 initializer for a static variable of a built-in type, 1
 lazy, 1
 member object initialization, 1
 memberwise, 1, 2
 object using =, 1
-  static
-  array, 1
 const, 1
 dependency, 1
 member , 1
 zero initialization by the linking-loading mechanism, 1 variables at point of definition, 1
 vs. bitcopy, 1injection, friend into namespace, 1
- inline, 1, 2
-  class definition, 1
 constructor efficiency, 1
 constructors, 1
 convenience, 1
 definitions and header files, 1
 destructors, 1
 effectiveness, 1
 efficiency, 1
 function, 1, 2, 3
 header files, 1
 in situ, 1
 limitations, 1
 non-inline template member function definitions, 1
 order of evaluation, 1
 templates, 1- input
-  reading by words, 1
 standard, 1insert( ), 1
inserter and extractor, overloading for iostreams, 1
instance of a class, 1
instantiation, template, 1
int, 1
- interface, 1
-  base-class interface, 1
 common interface, 1
 defining the class, 1
 expanding function interface, 1
 for an object, 1
 implementation, separation of, 1, 2, 3, 4
 implied by a template, 1
 user, 1internal linkage, 1, 2, 3, 4, 5
interpreters, 1
interrupt service routine (ISR), 1, 2
- iostreams, 1
-  get( ), 1
 getline( ), 1
-  global overloaded new & delete
-  interaction with, 1
 limitations of, 1 manipulators, 1
 overloading << and >>, 1
 reading and writing files, 1
 reading input, 1
 setf( ), 1
 strings with iostreams, 1
 width( ), 1- is-a
-  inheritance, 1, 2
 vs. is-like-a relationships, 1- ISO Standard
-  C, 1
-  fundamentals, 1
 -  C++, 1
-  header files, 1
 
istream, overloading operator >>, 1
iteration, in program development, 1
- iterator, 1, 2, 3
-  containers, 1
 motivation, 1
 nested class, 1
 Standard C++ Library, 1
Jacobsen, Ivar, 1
Java, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
K&R C, 1
- keywords
-  #define, 1, 2
 #endif, 1, 2
 #ifdef, 1
 #include , 1
 ‘.’ (member selection operator), 1
 &, 1
 ( ), function call operator overloading, 1
 *, 1, 2
-  ->, 1
-  overloading, 1
 struct member selection via pointer, 1-  ->*, 1
-  overloading, 1
.*, 1
 ::, 1, 2
-  =, 1
-  overloading, 1, 2
asm, for in-line assembly language , 1
 auto, 1, 2
-  bool, 1
-  true and false, 1
break, 1
 case, 1
 catch, 1
 char, 1, 2, 3
 class, 1, 2, 3
 const, 1, 2, 3
 const_cast, 1
 continue, 1
 default , 1
 delete, 1, 2
 do, 1
 double, 1, 2
 dynamic_cast, 1
 else, 1
-  enum, 1, 2
-  untagged, 1
explicit, 1
-  extern, 1, 2, 3, 4, 5, 6
-  for alternate linkage, 1
false, 1, 2
 float, 1, 2
 for, 1, 2
 friend, 1
 goto, 1, 2, 3
 if, 1
 inline, 1, 2
 int, 1
 long, 1
 long double, 1
 long float (not legal), 1
 mutable, 1
 namespace, 1, 2, 3
 new, 1, 2
 operator, 1
 private, 1, 2, 3, 4
 protected, 1, 2, 3
 public, 1
 register, 1, 2
 reinterpret_cast, 1
 return, 1
 short, 1
 signed, 1
 signed char, 1
-  sizeof, 1, 2, 3
-  with struct, 1
static, 1, 2, 3
 static_cast, 1, 2
 struct, 1, 2
 switch, 1, 2
 template, 1, 2
 this, 1, 2, 3, 4, 5
 throw, 1
 true, 1, 2
 try, 1
 typedef, 1
 typeid, 1
-  union, 1, 2
-  anonymous, 1
unsigned, 1
 using, 1, 2
 virtual, 1, 2, 3, 4, 5, 6, 7
 void, 1
 void& (illegal), 1
 void*, 1, 2
 volatile, 1
 while, 1, 2Koenig, Andrew, 1, 2, 3
Lajoie, Josee, 1
Lakos, John, 1, 2
- language
-  C++ is a more strongly typed language, 1
 C++, hybrid object-oriented language, and friend, 1
 hybrid object-oriented programming language, 1large programs, creation of, 1
- late binding, 1, 2
-  implementing, 1
layout, object, and access control, 1
lazy initialization, 1
leading underscore, on identifiers (reserved), 1
leaks, memory, 1, 2
left-shift operator <<, 1
- less than
-  <, 1
 or equal to <=, 1- library, 1, 2, 3, 4
-  C, 1
 code, 1
 creating your own with the librarian, 1
 issues with different compilers, 1
-  Standard C function
-  abort( ), 1
 atexit( ), 1
 exit( ), 1- lifetime
-  for loop variables, 1
 object, 1, 2
 temporary objects, 1limits.h, 1
- linkage, 1, 2
-  alternate linkage specification, 1
 controlling, 1
 external, 1, 2, 3
 internal, 1, 2, 3, 4
 no linkage, 1, 2
 type-safe, 1linked list, 1, 2, 3
- linker, 1, 2, 3
-  collision, 1
 external references, 1
 object file order, 1
 pre-empting a library function , 1
 searching libraries, 1, 2
 unresolved references, 1Lippman, Stanley, 1
- list
-  constructor initializer, 1, 2
 linked, 1, 2, 3Lister, Timothy, 1
- local
-  array, 1
 classes, 1
 static object, 1
 variable, 1, 2logarithm, 1
- logical
-  and &&, 1
 const, 1
 explicit bitwise and logical operators, 1
 not !, 1
 operators, 1, 2
 or ||, 1long, 1, 2
long double, 1, 2
longjmp( ), 1
- loop
-  for, 1
-  loop counter, defined inside control expression , 1
 variable lifetime in for loops , 1
 while, 1Love, Tom, 1
lvalue, 1, 2, 3
machine instructions, 1
- macro
-  argument, 1
 makefile, 1
-  preprocessor, 1, 2, 3
-  macros for parameterized types, instead of templates, 1
 unsafe, 1 to generate classes, 1magic numbers, avoiding, 1
- main( )
-  basic form, 1
- main( )
-  executing code after exiting, 1
 executing code before entering, 1maintenance, program, 1
- make, 1
-  dependencies, 1
 suffix rules, 1
 SUFFIXES, 1
macros, 1makefile, 1, 2
- malloc( ), 1, 2, 3, 4, 5
-  behavior, not deterministic in time, 1
management obstacles, 1
- mangling, name, 1, 2, 3
-  and overloading, 1
mathematical operators, 1
Matson, Kris C., 1
- member
-  defining storage for static data member, 1
 initializing const data members, 1
-  member function, 1, 2
-  calling, 1
 calling another member function from within a member function, 1
 const, 1, 2
 four member functions the compiler synthesizes, 1
 friend, 1
 non-inline template member function definitions, 1
 return type, 1
 selection, 1
 signature, 1
-  static, 1, 2, 3
-  and inheritance, 1
object, 1
 object initialization, 1
 overloaded member operator, 1
 pointers to members, 1
 selection operator, 1
 static data member inside a class, 1
 vs. non-member operators, 1- memberwise
-  assignment, 1, 2
 const, 1
 initialization, 1, 2- memcpy( ), 1
-  standard C library function, 1
- memory, 1
-  allocation and efficiency, 1
 dynamic memory allocation, 1, 2
-  leak, 1, 2
-  finding with overloaded new and delete, 1
 from delete void*, 1-  management
-  example of, 1
 reference counting, 1 memory manager overhead, 1
 read-only (ROM), 1
 simple storage allocation system, 1memset( ), 1, 2, 3, 4
- mentoring
-  and training, 1, 2
 consulting, mentoring, and design and code walkthroughs from MindView, 1message,  sending, 1, 2, 3
methodology, analysis and design, 1
Meyers, Scott, 1, 2, 3
- MindView
-  public hands-on training seminars, 1
 seminars-on-CD-ROM, 1minimum size of a struct, 1
mission statement, 1
mistakes, and design, 1
modulus (%), 1
Moo, Barbara, 1
Mortensen, Owen, 1
multi-way selection, 1
multiparadigm programming, 1
- multiple
-  dispatching, 1
 inclusion of header files, 1
 inheritance, 1, 2, 3, 4, 5
 multiple-declaration problem, 1multiplication (*), 1
multitasking and volatile, 1
Murray, Rob, 1, 2
- mutable, 1
-  bitwise vs. logical const, 1
mutators, 1
- name
-  clashes, 1
 collisions, in C, 1
-  decoration, 1, 2, 3, 4
-  no standard for, 1
 overloading and, 1 file, 1
 hiding, during inheritance, 1
-  mangling, 1, 2, 3
-  and overloading, 1
named constant, 1
- namespace, 1, 2, 3
-  aliasing, 1
 ambiguity, 1
 continuation, 1
 header files, 1
 injection of friends, 1
 referring to names in, 1
 single name space for functions in C, 1
 std, 1
 unnamed, 1
-  using, 1
-  declaration, 1
-  and overloading, 1
 -  directive, 1
-  and header files, 1
 
naming the constructor, 1
narrowing conversions, 1
NDEBUG, 1
needless recompilation, 1
- nested
-  class, 1
 friend structure, 1
 iterator class, 1, 2
 scopes, 1
 structures, 1- new, 1, 2
-  and delete for arrays, 1
 array of pointers, 1
 delete and containers, 1
 keyword, 1
 new-expression, 1, 2, 3
 new-handler, 1
-  operator new, 1
-  constructor, memory exhaustion , 1
 exhausting storage, 1
 placement specifier, 1-  overloading
-  can take multiple arguments, 1
-  new and delete, 1
-  for a class, 1
 for arrays, 1
 global, 1newline, 1
no linkage, 1, 2
non-local goto, 1
- not
-  bitwise, 1
 equivalent !=, 1
 logical not !, 1not_eq, != (logical not-equivalent), 1
nuance, and overloading, 1
NULL references, 1, 2
number, conversion to numbers from char*, 1
- object, 1, 2
-  address of, 1
 const member functions, 1
 creating a new object from an existing object, 1
 creating on the heap, 1
 definition of, 1
 definition point, 1
 destruction of static, 1
 dynamic object creation, 1, 2
-  file, 1
-  order during linking, 1
five stages of object design, 1
 function objects, 1
 global constructor, 1
 guidelines for object development, 1
 interface to, 1
 layout, and access control, 1
 lifetime of an object, 1, 2
 local static, 1
 member, 1
 module, 1
 object-based, 1
 object-based C++, 1
 outside, 1
 pass by value, 1
 passing and returning large objects, 1
 scope, going out of, 1
-  size, 1
-  forced to be non-zero, 1
slicing, 1, 2
-  static
-  class objects inside functions, 1, 2
 initialization dependency, 1 temporary, 1, 2, 3, 4
 unique address, each object, 1object-based/singly-rooted hierarchy, 1, 2
- object-oriented
-  analysis and design, 1
 basic concepts of object-oriented programming (OOP), 1
 C++, hybrid object-oriented language, and friend, 1
 hybrid object-oriented programming language, 1obstacles, management, 1
octal, 1
off-by-one error, 1
- ofstream, 1, 2
-  as a static object, 1
one-definition rule, 1, 2
ones complement operator, 1
- OOP, 1
-  analysis and design, 1
 basic characteristics, 1
 basic concepts of object-oriented programming, 1
 Simula programming language, 1
 substitutability, 1
 summarized, 1- operator, 1
-  &, 1
 >> and iostreams, 1
 << overloading to use with ostream, 1
 ( ), function call, 1
 *, 1, 2, 3
 -> smart pointer, 1
 ->* pointer to member, 1
-  =, 1
-  as a private function, 1
 automatic creation, 1
 behavior of, 1
 doesn’t automatically inherit , 1
 memberwise assignment, 1
 private, 1
 vs. copy-constructor, 1 ?: ternary if-else, 1
 assignment, 1
 auto-increment ++, 1
-  binary
-  operators, 1
 overloaded, 1
 overloading examples, 1 bitwise, 1
 bool behavior with built-in operators, 1
 C & C++, 1
 casting, 1
 choosing between member and non-member overloading, guidelines, 1
 comma, 1, 2
 complicated expressions with operator overloading, 1
 explicit bitwise and logical operators, 1
 fan-out in automatic type conversion, 1
-  global
-  overloaded, 1
 scope resolution ::, 1 increment ++ and decrement --, 1
 logical, 1, 2
 member vs. non-member, 1
-  new, 1
-  exhausting storage , 1
 new-expression, 1
 placement specifier, 1 no exponentiation, 1
 no user-defined, 1
 ones-complement, 1
 operators you can’t overload, 1
-  overloading, 1, 2, 3, 4
-  arguments and return values, 1
 check for self-assignment, 1
 inheritance, 1
 member function, 1
 operators that can be overloaded, 1
 reflexivity, 1
 return type, 1
 virtual functions, 1
 [ ], 1 pitfalls, 1
 postfix increment & decrement, 1
 precedence, 1
 prefix increment & decrement, 1
 preprocessor stringize operator #, 1
 relational, 1
-  scope resolution ::, 1, 2, 3
-  and namespaces, 1
 for calling base-class functions, 1 shift, 1
 sizeof, 1
 type conversion overloading, 1
-  unary, 1, 2
-  overloaded, 1
 overloading examples, 1 unusual overloaded, 1
 [ ], 1, 2, 3
++, 1
member selection, 1- optimization
-  inlines, 1
 return value optimization, 1- optimizer
-  peephole, 1
global, 1- or
-  | bitwise, 1
 || logical, 1, 2, 3- order
-  access specifiers, 1
 constructor and destructor calls, 1
 constructor calls, 1- organization, code, 1
-  header files, 1
or_eq, |= (bitwise or-assignment), 1
- ostream, 1
-  overloading operator <<, 1, 2
output, standard, 1
outside object, 1
- overhead
-  assembly-language code generated by a virtual function, 1
 function call, 1, 2
 memory manager, 1
 size overhead of virtual functions, 1- overloading, 1
-  << and >> for iostreams, 1
 assignment, 1
 choosing between members and non-members, guidelines, 1
 constructor, 1
 default arguments, difference with overloading, 1
 fan-out in automatic type conversion, 1
 function, 1
 function call operator( ), 1
 global operators vs. member operators, 1
 namespaces, using declaration, 1
 new & delete, 1
-  new and delete
-  array, 1
 class, 1
 global, 1 on return values, 1
-  operator, 1
-  << to use with ostream, 1
 ++, 1
 -> smart pointer operator, 1
 ->* pointer-to-member, 1
 inheritance, 1
 operators that can be overloaded, 1
 operators that can’t be overloaded, 1
 overloading reflexivity, 1
 type conversion, 1
 virtual functions, 1
 [ ], 1 operator , 1
 overriding, difference, 1
 pitfalls in automatic type conversion, 1- overriding, 1
-  and overloading, 1
 during inheritance, 1
 function, 1overview, chapters, 1
- ownership, 1, 2, 3, 4
-  and containers, 1, 2, 3, 4
pair programming, 1
paralysis, analysis, 1
- parsing, 1
-  parse tree, 1
pass-by-reference, 1
- pass-by-value, 1, 2
-  and arrays, 1
- passing
-  and returning
-  addresses, 1
 
 addresses, with const, 1
 by value, C, 1
 large objects, 1 by value, 1, 2, 3
 temporaries, 1- patterns, design, 1, 2
-  iterator, 1
performance issues, 1
Perl, 1
- pitfall
-  automatic type conversion, 1
 C, 1
 operators, 1
 preprocessor, 1placeholder arguments, 1
placement,  operator new placement specifier, 1
planning, software development, 1
Plauger, P.J., 1
Plum, Tom, 1, 2, 3
point, sequence, 1, 2
- pointer, 1, 2, 3, 4, 5
-  argument passing, vs. references, 1
 arithmetic, 1
-  array, 1
-  making a pointer look like an array, 1
 of pointers, 1 assignments, const and non-const, 1
 classes containing, and overloading operator=, 1
 const, 1, 2
 formatting definitions, 1
 introduction, 1
-  member, pointer to, 1
-  function, 1
 overloading, 1 pointer & reference upcasting, 1
-  pointer to function
-  array of, 1
 defining, 1
 using, 1 reference to pointer, 1
 reference, difference, 1
 smart pointer, 1
 square brackets, 1
 stack, 1
 struct, member selection with ->, 1
 upcasting, 1
 void, 1, 2, 3, 4
 void*, 1
 vs. reference when modifying outside objects, 1- polymorphism, 1, 2, 3, 4, 5, 6
-  containers, 1
 polymorphic function call, 1
 vs. downcasting, 1post-decrement --, 1
post-increment ++, 1
postconditions, 1
postfix operator increment & decrement, 1
pre-decrement --, 1
pre-increment ++, 1
precedence, operator, 1
preconditions, 1
prefix operator increment & decrement, 1
- preprocessor, 1, 2, 3
-  #define, #ifdef and #endif, 1
 and scoping, 1
 debugging flags, 1
-  macro, 1, 2, 3
-  unsafe, 1
pitfall, 1
 problems, 1
 string concatenation, 1
 stringizing, 1
 token pasting, 1
 value substitution, 1prerequisites, for this book, 1
preventing automatic type conversion with the keyword explicit, 1
printf( ), 1
- private, 1, 2, 3, 4, 5, 6
-  copy-constructor, 1
 private inheritance, 1problem space, 1
process, 1
production, and book design, 1
- program
-  maintenance, 1
 structure when writing code, 1programmer, client, 1, 2
- programming
-  basic concepts of object-oriented programming (OOP), 1
 Extreme Programming (XP), 1, 2, 3
 in the large, 1
 incremental process, 1
 multiparadigm, 1
 pair, 1programs, calling other, 1
project building tools, 1
- promotion, 1
-  automatic type conversion, 1
- protected, 1, 2, 3, 4
-  inheritance, 1
- prototyping
-  function, 1
 rapid, 1pseudoconstructor, for built-in types, 1, 2, 3
- public, 1, 2
-  inheritance, 1
 seminars, 1- pure
-  abstract base classes and pure virtual functions, 1
 C++, hybrid object-oriented language, and friend, 1
 substitution, 1
 virtual destructor, 1
 virtual function definitions, 1push-down stack, 1
push_back( ), for vector, 1
putc( ), 1
puts( ), 1
Python, 1, 2, 3, 4, 5, 6, 7, 8
qualifier, c-v, 1
ranges, used by containers and iterators in the Standard C++ Library, 1
rapid prototyping, 1
re-declaration of classes, preventing, 1
re-entrant, 1
read-only memory (ROM), 1
- reading
-  files, 1
 input by words, 1realloc( ), 1, 2, 3
recompiling C programs in C++, 1
- recursion, 1, 2
-  and inline functions, 1
redefining during inheritance, 1
reducing recompilation, 1
refactoring, 1
- reference, 1, 2, 3
-  C++, 1
-  const, 1, 2
-  and operator overloading, 1
 for argument passing, 1 efficiency, 1
 external, during linking, 1
 free-standing, 1
 function, 1
 NULL, 1, 2
 passing const, 1
 pointer & reference upcasting, 1
 pointer, reference to a pointer, 1
 reference counting, 1, 2
 rules, 1
 upcasting, 1
 void reference (illegal), 1
 vs. pointer when modifying outside objects, 1reflexivity, in operator overloading, 1
- register, 1
-  variables, 1
reinterpret_cast, 1
relational operators, 1
reporting errors in book, 1
request, in OOP, 1
require( ), 1, 2, 3
- require.h, 1, 2, 3, 4
-  function definitions, 1
requireArgs( ), from require.h, 1
requirements analysis, 1
- resolution, scope
-  global, 1
 nested structures, 1
 operator ::, 1resolving references, 1
- return
-  by value, 1
 by value as const, and operator overloading, 1
 const value, 1
 constructor return value, 1
 efficiency when creating and returning objects, 1
 function return values, references, 1
 keyword, 1
-  operator
-  overloaded return type, 1
 overloading arguments and return values, 1 overloading on return values, 1
 passing and returning by value, C, 1
 passing and returning large objects, 1
 references to local objects, 1
 type, 1
-  value, 1
-  from a function, 1
 optimization, 1
 semantics, 1
 void, 1RETURN, assembly-language, 1
reusability, 1
- reuse, 1
-  code reuse, 1
 existing class libraries, 1
 source code reuse with templates, 1
 templates, 1right-shift operator (>>), 1
ROM, read-only memory, ROMability, 1
- rotate, 1
-  bit manipulation, 1
RTTI, run-time type identification, 1, 2
rule, makefile, 1
Rumbaugh, James, 1
- run-time
-  access control, 1
 binding, 1
 debugging flags, 1
 type identification (RTTI), 1, 2rvalue, 1, 2
safe union, 1
Saks, Dan, 1, 2, 3, 4
scenario, 1
scheduling, 1
Schwarz, Jerry, 1
- scope, 1, 2, 3, 4
-  consts, 1
 file, 1, 2
 going out of, 1
 hide variables from the enclosing scope, 1
 preprocessor, 1
-  resolution
-  global, 1
 nested structures, 1
-  operator ::, 1, 2
-  and namespaces, 1
 for calling base-class functions, 1 scoped variable, 1
 static member initialization, 1
 storage allocation, 1
 use case, 1second edition, what’s new, 1
security, 1
- selection
-  member function, 1
 multi-way, 1self-assignment, checking for in operator overloading, 1, 2
semantics, return value, 1
- seminars
-  on CD-ROM, from MindView, 1
 public, 1
 training seminars from MindView, 1sending a message, 1, 2, 3
sentinel, end, 1, 2
- separate compilation, 1, 2
-  and make, 1
separation of interface and implementation, 1, 2, 3
sequence point, 1, 2
- set
-  <set> standard header file, 1
 and get functions, 1
 container class from the Standard C++ Library, 1setf( ), iostreams, 1
setjmp( ), 1
SGI (Silicon Graphics) STL project, 1
- shape
-  example, 1
 hierarchy, 1shift operators, 1
short, 1
side effect, 1, 2
signature, 1
- signed, 1
-  char, 1
Silicon Graphics (SGI) STL project, 1
Simula programming language, 1, 2
single-precision floating point, 1
singly-rooted/object-based hierarchy, 1, 2
- size
-  built-in types, 1
-  object, 1
-  forced to be nonzero, 1
size_t, 1
 storage, 1
 struct, 1
 word, 1- sizeof, 1, 2, 3, 4
-  char, 1
 struct, 1- slicing
-  object slicing, 1
Smalltalk, 1, 2, 3, 4, 5
smart pointer operator ->, 1, 2
- software
-  crisis, 1
 development methodology, 1solution space, 1
solutions, exercise, 1
source code availability, 1
source-level debugger, 1
- space
-  problem, 1
 solution, 1- specification
-  incomplete type, 1, 2
 system specification, 1- specifier
-  access specifiers, 1, 2
-  no required order in a class, 1
 to modify basic built-in types, 1
specifying storage allocation, 1
sstream standard header file, 1
- stack, 1, 2, 3, 4
-  function-call stack frame, 1
 pointer, 1
 push-down, 1
 storage allocation, 1
 variable on the stack, 1Stack example class, 1, 2, 3, 4, 5, 6, 7, 8, 9
- Standard C++ Library
-  algorithms, 1
 insert( ), 1
 push_front( ), 1
 ranges, used by containers and iterators, 1standard for each class header file, 1
standard input, 1
standard library, 1
- standard library header file
-  cassert, 1
 cstdlib, 1
 cstring, 1
 set, 1
 sstream, 1
 typeinfo, 1standard output, 1
Standard Template Library (STL), 1
standards, C++ Committee, 1
startup costs, 1
startup module, 1
Stash example class, 1, 2, 3, 4, 5, 6, 7, 8, 9
- statement
-  continuation over several lines, 1
 mission, 1- static, 1, 2, 3
-  array, 1
-  initialization, 1
 class objects inside functions, 1
 confusion when using, 1
 const, 1
-  data
-  area, 1
-  members inside a class, 1, 2
-  defining storage for, 1
destruction of objects, 1
 file, 1, 2
 initialization dependency, 1
 initialization to zero, 1
 initializer for a variable of a built-in type, 1
 local object, 1
-  member functions, 1, 2, 3
-  inheritance and, 1
objects inside functions, 1
-  storage, 1, 2
-  area, 1
type checking, 1
 variables in functions as return values, 1
 variables inside functions, 1- static_cast, 1, 2
-  downcast, 1
std namespace, 1
step, in for loop, 1
- STL
-  Silicon Graphics (SGI) STL project, 1
 Standard Template Library, 1- storage
-  allocation, 1
-  const and extern, 1
 auto storage class specifier, 1
 const, in C vs. C++, 1
 defining storage for static data members, 1
 extern storage class specifier, 1
 register storage class specifier, 1
 running out of, 1
 simple allocation system, 1
 sizes, 1
-  static, 1, 2
-  area, 1
 storage class specifier, 1 storage class, 1storing type information, 1
Straker, David, 1
- string, 1, 2
-  class, Standard C++, 1
 concatenation, 1
 copying a file into, 1
 getline( ), 1
 preprocessor # to turn a variable name into a string, 1
 preprocessor string concatenation, 1- stringizing, preprocessor, 1
-  macros, 1
 operator #, 1stringstream, 1
strong typing, C++ is a more strongly typed language, 1
Stroustrup, Bjarne, 1, 2, 3, 4, 5, 6, 7
- struct, 1, 2, 3, 4
-  aggregate initialization, 1
 array of, 1
 hiding function names inside, 1
 minimum size, 1
 pointer selection of member with ->, 1
 size of, 1- structure
-  aggregate initialization and structures, 1
 declaration, 1, 2
 definition in a header file, 1
 friend, 1
 nested, 1
 redeclaring, 1subobject, 1, 2, 3, 4
substitutability, in OOP, 1
- substitution
-  principle, 1
 value, 1subtraction (-), 1
subtyping, 1
suffix rules, makefile, 1
SUFFIXES, makefile, 1
sugar, syntactic, 1
- switch, 1, 2
-  defining variables inside the selector statement, 1
- syntax
-  function declaration syntax, 1
 operator overloading, 1
 sugar, with operator overloading, 1
 variable declaration syntax, 1- synthesized
-  default constructor, behavior of, 1
 member functions that are automatically created by the compiler, 1, 2system specification, 1
system(), 1
tab, 1
table-driven code, 1
tag name, 1
tag, comment for linking, 1
- template, 1, 2
-  argument list, 1
 basic usage, 1
 class, 1
 constants and default values in templates, 1
 container class templates and virtual functions, 1
 function, 1
 generated classes, 1
 header file, 1, 2
 implies an interface, 1
 inline, 1
 instantiation, 1
 multiple definitions, 1
 non-inline template member function definitions, 1
 preprocessor macros for parameterized types, instead of templates, 1
 Standard Template Library (STL), 1
 Stash and Stack examples as templates, 1
 weak typing, 1- temporary object, 1, 2, 3
-  bugs, 1
 function references, 1
 passing a temporary object to a function, 1
 return value, 1ternary operator, 1
- testing
-  automated, 1
 Extreme Programming (XP), 1Thinking in C++ Volume 2, what’s in it and how to get it, 1
Thinking in C: Foundations for Java and C++ CD ROM, 1, 2, 3
- this, 1, 2, 3, 4, 5, 6, 7
-  address of current object, 1
throw, 1
time, Standard C library, 1
time_t, 1
token pasting, preprocessor, 1
toupper( ), unexpected results, 1
trailing arguments only can be defaults, 1
- training, 1
-  and mentoring, 1, 2
 seminars from MindView, 1translation unit, 1, 2
- true, 1, 2, 3, 4
-  and false, in conditionals, 1
 bool, true and false, 1try block, 1
- type
-  abstract data type, 1
-  automatic type conversion, 1
-  preventing with the keyword explicit, 1
 with operator overloading, 1 base, 1
 basic built-in, 1
 cast, 1
-  checking, 1, 2, 3, 4
-  stricter in C++, 1
-  conversion, 1
-  implicit, 1
creation, composite, 1
 data type equivalence to class, 1
 derived, 1
 function type, 1
 improved type checking, 1
 incomplete type specification, 1, 2
 inheritance, is-a, 1
 initialization of built-in types with ‘constructors’, 1
 run-time type identification (RTTI), 1, 2
 storing type information, 1
-  type checking
-  for enumerations, 1
 for unions, 1 type-safe linkage, 1
 user-defined, 1, 2
-  weak typing, 1, 2
-  C++ via templates, 1
type-safe downcast, 1
typedef, 1, 2, 3, 4, 5
typefaces, book, 1
typeid, 1
typeinfo standard header file, 1
- UML, 1
-  indicating composition, 1
 Unified Modeling Language, 1, 2- unary
-  examples of all overloaded unary operators, 1
 minus -, 1
-  operators, 1, 2
-  overloaded , 1
plus +, 1underscore, leading, on identifiers (reserved), 1
Unified Modeling Language (UML), 1, 2
- union
-  additional type checking, 1
-  anonymous, 1
-  file scope, 1
difference between a union and a class, 1
 member functions and access control, 1
 safe, 1
 saving memory with, 1unit, translation, 1
- unnamed
-  arguments, 1
 namespace, 1unresolved references, during linking, 1
unsigned, 1
untagged enum, 1, 2
unusual operator overloading, 1
- upcasting, 1, 2, 3, 4, 5, 6
-  by value, 1
 copy-constructor, 1
 explicit cast for upcasting, 1
-  pointer, 1
-  and reference upcasting, 1
reference, 1
 type information, lost, 1- use case, 1
-  iteration, 1
 scope, 1user interface, 1
user-defined data type, 1, 2, 3
- using keyword, for namespaces, 1, 2
-  declaration, 1, 2
-  directive, 1, 2, 3
-  header files, 1
namespace std, 1- value
-  constant, 1
 minimum and maximum for built-in types, 1
 pass-by-value, 1
 preprocessor value substitution, 1
 return, 1
 returning by value, 1- varargs, 1
-  variable argument list, 1
- variable
-  argument list, 1
-  varargs, 1
 automatic, 1, 2, 3
 declaration syntax, 1
 defining, 1
 file scope, 1
 global, 1
 going out of scope, 1
 hide from the enclosing scope, 1
 initializer for a static variable of a built-in type, 1
 lifetime, in for loops, 1
 local, 1, 2
 point of definition, 1
 register, 1
 scoped, 1
 stack, 1
 turning name into a string, 1- vector, 1
-  assignment, 1
 of change, 1
 push_back( ), 1
 Standard C++ Library, 1- virtual destructor, 1, 2, 3, 4
-  pure virtual destructor, 1
- virtual function, 1, 2, 3, 4, 5
-  adding new virtual functions in the derived class, 1
 and dynamic_cast, 1
 assembly-language code generated by a virtual function, 1
 constructors, behavior of virtual functions inside, 1, 2
 destructors, behavior of virtual functions inside, 1
 efficiency, 1
 late binding, 1
 operator overloading and virtual functions, 1
 overriding, 1
 picturing virtual functions, 1
-  pure virtual function
-  and abstract base classes, 1
 definitions, 1 size overhead of virtual functions, 1
-  virtual keyword, 1, 2
-  in base-class declarations, 1
 in derived-class declarations, 1virtual memory, 1
visibility, 1
- void
-  argument list, 1
 casting void pointers, 1
 keyword, 1
 pointer, 1, 2, 3, 4, 5
 reference (illegal), 1- void*, 1, 2, 3
-  bugs, 1
 containers and ownership, 1
 delete, a bug, 1- volatile, 1, 2
-  casting with const_cast, 1
Volume 2, Thinking in C++, 1
vpointer, abbreviated as VPTR, 1
- VPTR, 1, 2, 3, 4, 5
-  installation by the constructor, 1
- VTABLE, 1, 2, 3, 4, 5, 6, 7
-  inheritance and the VTABLE, 1
Waldrop, M. Mitchell, 1
- weak
-  typing, 1
-  in C++ via templates, 1
 weakly typed language, 1
- while loop, 1, 2
-  defining variables inside the control expression, 1
width( ), iostreams, 1
wild-card, 1
Will-Harris, Daniel, 1, 2
word size, 1
writing files, 1
xor ^ bitwise exclusive-or, 1, 2
xor_eq, ^= bitwise exclusive-or-assignment, 1
XP, Extreme Programming, 1
zero indexing, 1
- [ ]
-  array indexing, 1
 overloaded indexing operator, 1, 2
^ bitwise exclusive-or, 1
^= bitwise, 1
|, bitwise or, 1
|= bitwise, 1
||, logical or, 1, 2
~ bitwise not/ones complement, 1
~, destructor, 1