access function, 1
access specifiers and object layout, 1
control, 1
control, run-time, 1
order for specifiers, 1
specifiers, 1, 2
accessors, 1
adapting to usage in different countries, Standard C++ localization library, 1
adding new virtual functions in the derived class, 1
addition , 1
address of an object, 1
address-of (&), 1
addresses
pass as const references, 1
passing and returning, 1
aggregate
const aggregates, 1
initialization, 1
initialization and structures, 1
calculating size, 1
initializing to zero, 1
making a pointer look like an array, 1
new & delete, 1
overloading new and delete for arrays, 1
static initialization, 1
assembly-language
asm in-line assembly language keyword, 1
assembly-language code generated by a virtual function, 1
CALL, 1
RETURN, 1
and C++ compatibility, 1
and the heap, 1
basic data types, 1
C programmers learning C++, 1
compiling with C++, 1
const, 1
difference with C++ when defining variables, 1
error handling in C, 1
function library, 1
linking compiled C code with C++, 1
localtime( ), Standard library, 1
operators and their use, 1
passing and returning variables by value, 1
rand( ), Standard library, 1
Standard C, 1
Standard C library function abort( ), 1
Standard C library function strncpy( ), 1
Standard C library function strtok( ), 1
standard I/O library, 1
Standard library function abort( ), 1
Standard library function atexit( ), 1
Standard library function exit( ), 1
Standard library macro toupper( ), 1
and C compatibility, 1
ANSI/ISO C++ committee, 1
C programmers learning C++, 1
CGI programming in C++, 1
compiling C, 1
data, 1
difference with C when defining variables, 1
GNU C++ Compiler, 1
linking compiled C code with C++, 1
major language features, 1
object-based C++, 1
operators and their use, 1
programming guidelines, 1
sacred design goals of C++, 1
Standard C++, 1
Standard string class, 1
Standard Template Library (STL)., 1
template, 1
abstract base classes and pure virtual functions, 1
abstract class, 1
adding new virtual functions in the derived class, 1
class definition and inline functions, 1
class hierarchies and exception handling, 1
compile-time constant inside, 1
compile-time constants in, 1
composition, 1
const and enum in, 1
container class templates and virtual functions, 1
declaration, 1
definition, 1
duplicate class definitions and templates, 1
generated classes for templates, 1
handle, 1
inheritance diagrams, 1
local, 1
maintaining library source, 1
most-derived class, 1
nested, 1
nested class, and run-time type identification, 1
overloading new and delete for a class, 1
pointers in, 1
pure abstract base class, 1
Standard C++ string, 1
static data members, 1
static member functions, 1
string, 1
virtual base classes, 1
wrapping, 1
cleaning up the stack during exception handling, 1
cleanup, 1, 2
clear( ), 1, 2
client programmer, 1, 2
code generator, 1
address of, 1
and enum in classes, 1
and pointers, 1
and string literals, 1
casting away, 1
casting away const, 1
casting away const and/or volatile, 1
const correctness, 1
const objects and member functions, 1
const reference function arguments, 1
extern, 1
for aggregates, 1
for function arguments and return values, 1
in C, 1
initializing data members, 1
member function, 1
memberwise, 1
mutable, 1
pass addresses as const references, 1
reference, 1, 2
return by value as const, 1
automatic type conversion, 1
automatic type conversions and exception handling, 1
narrowing conversions, 1
pitfalls in automatic type conversion, 1
preventing automatic type conversion with the keyword explicit, 1
block, 1
class, 1
duplicate class definitions and templates, 1
object, 1
pure virtual function definitions, 1
storage for static data members, 1
vs declaration, 1
& new for arrays, 1
and zero pointer, 1
delete-expression, 1, 2
multiple deletions of the same object, 1
overloading array new and delete, 1
overloading global new and delete, 1
overloading new & delete, 1
overloading new and delete for a class, 1
overloading new and delete for arrays, 1
Demarco, Tom, 1
dependency, static initialization, 1
dereference (*), 1
derived
adding new virtual functions in the derived class, 1
virtual keyword in derived-class declarations, 1
abstraction in program design, 1
analysis & design, object-oriented, 1
and efficiency, 1
and inlines, 1
and mistakes, 1
patterns, 1
sacred design goals of C++, 1
and exceptions, run-time type identification, 1
difference between dynamic_cast and typeid( ), run-time type identification, 1
run-time type identification, 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
applying a function to a container, 1
argument list, 1
assembly-language code generated by a virtual function, 1
behavior of virtual functions inside constructors, 1
C library, 1
call overhead, 1
calling a member, 1
class defined inside, 1
const function arguments, 1
const member, 1, 2
const reference arguments, 1
creating, 1
declaring, 1, 2
expanding the function interface, 1
friend member, 1
function call binding, 1, 2
function call operator( ), 1
function objects, 1
function templates, 1
function type, 1
function-call stack frame, 1
global, 1
global friend, 1
helper, assembly, 1
inline, 1, 2
inline , 1
member function template, 1
member overloaded operator, 1
member selection, 1
operator overloading, 1
pass-by reference & temporary objects, 1
picturing virtual functions, 1
pointer to a function, 1
polymorphic function call, 1
pure virtual function definitions, 1
redefinition during inheritance, 1
reference arguments and return values, 1
return value, 1
return values, 1
run-time type identification without virtual functions, 1, 2
static member, 1, 2, 3
variable argument list, 1
virtual function overriding, 1
virtual functions, 1
virtual functions & constructors, 1
void return value, 1
function bodies, 1
function declaration syntax, 1
function definitions, 1
file, 1, 2
file, multiple inclusion, 1
files, 1, 2, 3, 4, 5
formatting standard, 1
header files and inline definitions, 1
header files and templates, 1
importance of using a common header file, 1
new file include format, 1
aggregate, 1
constructor initializer list, 1, 2
guaranteed, 1, 2
initializer for a static variable of a built-in type, 1
initializers for array elements, 1
initializing const data members, 1
initializing to zero, 1
initializing with the constructor, 1
member object initialization, 1
memberwise, 1
static array, 1
static dependency, 1
static to zero, 1
initializing variables at definition, 1
inject, into namespace, 1
inline
and class definition, 1
and constructors, 1
and destructors, 1
and efficiency, 1
constructor efficiency, 1
definitions and header files, 1
effectiveness, 1
function, 1, 2
functions, 1
in situ, 1
limitations, 1
order of evaluation, 1
and implementation, separation, 1
base-class interface, 1
command-line, 1
common interface, 1
expanding function interface, 1
graphical user (GUI), 1
repairing an interface with multiple inheritance, 1
separation of interface and implementation, 1, 2
C standard I/O, 1
issues with different compilers, 1
maintaining class source, 1
Standard C function abort( ), 1
Standard C function atexit( ), 1
Standard C function exit( ), 1
standard template library (STL), 1
calling a member function, 1
const member function, 1
const member functions, 1
defining storage for static data member, 1
friend function, 1
initializing const data members, 1
member function selection, 1
member function template, 1
member object initialization, 1
member selection operator, 1
overloaded member operator, 1
pointers to members, 1
static data member, 1
static data member inside a class, 1
static member function, 1, 2
static member functions, 1
vs. non-member operators, 1
aliasing, 1
ambiguity, 1
continuation, 1
injection, 1
overloading and using declaration, 1
referring to names in, 1
unnamed, 1
using, 1
using declaration, 1
and delete for arrays, 1
new-expression, 1, 2
new-handler, 1, 2
operator, 1
operator new and constructor, out of memory, 1
operator new placement specifier, 1
operator, exhausting storage, 1
overloaded, can take multiple arguments, 1
overloading array new and delete, 1
overloading global new and delete, 1
overloading new and delete, 1
overloading new and delete for a class, 1
overloading new and delete for arrays, 1
placement syntax, 1
<< and >> for iostreams, 1
and using declaration, namespaces, 1
array new and delete , 1
choosing between members and non-members, guidelines, 1
fan-out in automatic type conversion, 1
function call operator( ), 1
global new and delete, 1
global operators vs. member operators, 1
new & delete, 1
new and delete for a class, 1
new and delete for arrays, 1
on return values, 1
operator, 1
operator overloading reflexivity, 1
operator<< to use with ostream, 1
operator++, 1
operator->* (pointer-to-member), 1
operators you can’t overload, 1
pitfalls in automatic type conversion, 1
smart pointer operator->, 1
which operators can be overloaded, 1
and const, 1
finding exact type of a base pointer, 1
in classes, 1
making it look like an array, 1
pointer references, 1
pointer to a function, 1
smart pointer, 1
stack, 1
to member, 1, 2
void, 1, 2, 3
assembly-language, 1
by value as const, 1
constructor return value, 1
efficiency when creating and returning objects, 1
operator overloading arguments and return values, 1
overloaded operator return type, 1
overloading on return values, 1
passing and returning by value, C, 1
passing and returning large objects, 1
return by value, 1
return value semantics, 1
returning by const value, 1
returning references to local objects, 1
return value, void, 1
returning a value from a function, 1
and efficiency, 1
and exception handling, 1
and multiple inheritance, 1, 2, 3
and nested classes, 1
and references, 1
and templates, 1
and upcasting, 1
and void pointers, 1
bad_cast, 1
bad_typeid, 1
before( ), 1
building your own, 1
casting to intermediate levels, 1
difference between dynamic_cast and typeid( ), 1
dynamic_cast, 1
mechanism & overhead, 1
misuse, 1
RTTI, abbreviation for, 1
shape example, 1
type-safe downcast, 1
typeid( ), 1
typeid( ) and built-in types, 1
typeinfo, 1, 2
vendor-defined, 1
VTABLE, 1
when to use it, 1
without virtual functions, 1, 2
semantics, return value, 1
sending a message, 1, 2
separate compilation, 1, 2
separate compilation , 1
separation of interface & implementation, 1
separation of interface and implementation, 1, 2
sequence point, 1, 2
array initialization, 1
data area, 1
data member, 1
data members inside a class, 1
defining storage for static data members, 1
destruction of objects, 1
downcast, 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 function, 1, 2
member functions, 1
storage, 1
storage area, 1
variables inside functions, 1
indexOf( ), 1
literals, 1
preprocessor string concatenation, 1
Standard C++ library string class, 1
string class example, 1
transforming character strings to typed values, 1
turning variable name into, 1
substring( ), 1
and header files, 1
and inheritance, 1
and multiple definitions, 1
and run-time type identification, 1
argument list, 1
C++ Standard Template Library (STL), 1
constants in templates, 1
container class templates and virtual functions, 1
controlling instantiation, 1
function templates, 1
generated classes, 1
in C++, 1
instantiation, 1
member function template, 1
preprocessor macros for parameterized types, instead of templates, 1
preventing template bloat, 1
requirements of template classes, 1
standard template library (STL), 1
stash and stack as templates, 1
temporary
object, 1, 2, 3
passing a temporary object to a function, 1
temporary objects and function references, 1
trace information, adding to program, 1
transforming character strings to typed values, 1
translation unit, 1, 2
true, 1, 2, 3, 4
true and false, bool, 1
try block, 1
tuple-making template function, 1
type
automatic type conversion, 1
automatic type conversions and exception handling, 1
basic built-in, 1
built-in types and typeid( ), run-time type identification, 1
checking, 1
conversion, 1
finding exact type of a base pointer, 1
function type, 1
implicit conversion, 1
improved type checking, 1
incomplete type specification, 1, 2
new cast syntax, 1
preventing automatic type conversion with the keyword explicit, 1
run-time type identification (RTTI), 1, 2
storing type information, 1
type checking for enumerations, 1
type checking for unions, 1
type-safe downcast in run-time type identification, 1
type-safe linkage, 1
and built-in types, run-time type identification, 1
and exceptions, 1
difference between dynamic_cast and typeid( ), run-time type identification, 1
run-time type identification, 1
typeinfo
run-time type identification, 1
structure, 1
TYPEINFO.H, 1
automatic, 1
defining, 1
file scope, 1
global, 1
going out of scope, 1
initializer for a static variable of a built-in type, 1
local, 1
point of definition, 1
register, 1
turning name into a string, 1
variable argument list, 1
abstract base classes and pure virtual functions, 1
adding new virtual functions in the derived class, 1
and efficiency, 1
and late binding, 1
assembly-language code generated by a virtual function, 1
behavior of virtual functions inside constructors, 1
destructor, 1, 2
destructors and virtual destructors, 1
function, 1, 2
function overriding, 1
keyword, 1
picturing virtual functions, 1
pure virtual function definitions, 1
run-time type identification without virtual functions, 1, 2
simulating virtual constructors, 1
size overhead of virtual functions, 1
virtual base classes, 1
virtual base classes with a default constructor, 1
virtual function calls in destructors, 1
virtual functions inside constructors, 1, 2
virtual keyword in derived-class declarations, 1
virtual memory, 1