default type template parameters, 849
defaulted methods, classes, 1179–1180
defaults.cpp, 1077
deferencing operator (*), pointers, 171–172
#define directive, converting to standard C++
const instead of #define, 1327–1329
inline instead of #define, 1329–1330
defining
class member functions, 514–516
classes, 47
constructors, 525–526
functions, 306–309
defining declarations, 463
definitions, 463
delegating constructors, 1180–1181
delete operator, 163–164, 180–183, 400, 454, 476–477, 668
delete.cpp, 181
deleted methods, classes, 1179–1180
deque class templates, 1013
deque containers, 1013
deques, methods, 1278–1280
dequeue() method, 689
dereferencing (*) operator, 155–159
dereferencing operators, 1242–1246
derived classes, 405
constructors, 713–715
creating, 711–712
header files, 716
method definitions, 716
objects, creating, 717–718
relationships with base classes, 718–720
derived types, 116
design
bottom-up, 13
top-down, 12
destructors, 524, 528–529, 538–539, 768
class, 524
virtual destructors, 737, 742–743, 776
difference_type type, 1250, 1273
directives
#define, converting to standard C++, 1327–1330
#ifndef, 451
#include, 33
using, 35–36, 59–60, 487–490
displacement vectors, 589
divide-and-conquer strategy, 360–361
divide.cpp, 100
division operator (/), 100–101
dma.cpp, 762–764
dma.h, 761–762
do while loops, 231–233
dominance, virtual base classes, 828–829
double data type, 50, 94–96
double-ended queue, 1013
dowhile.cpp, 232
downcasting, 738
Draw() function, 818
dribble() function, 414
dynamic storage duration, 454
dynamic arrays, 172–173
creating, 164–165
new operator, 164
sample program, 165–167
dynamic binding, 164, 172–173, 737–740
dynamic cast operator, 934, 941–943
dynamic cast operators, 934–939
dynamic memory, 476–479, 482
dynamic memory allocation, 757
auto_ptr class, 969, 973–975
derived class does use new, 758–760
derived class doesn’t use new, 757–758
example, 761–766
dma.cpp, 762–764
dma.h, 761–762
usedma.cpp, 765
dynamic structures, creating, 178–180
dynamic_cast operator, 943
dynamic variables, 454
E
early binding, 737
empty lines in strings, 130
empty() method, 1258, 1275
encapsulation, 512, 523
end() method, 981–984, 1251, 1275
end-of-file conditions, 237–241
endl manipulator, 37–38
enqueue() function, 890
entry-condition loops, 198
enum statement, 278–280
enum variables, 150–152
enumerators, 150–151
value ranges, 153
values, setting, 152
enum.cpp, 279
enumerations, 150–152
enumerators, 150–151
scoped, 1158
C++11, 551–552
value ranges, 153
values, setting, 152
enumerators, 150–151
as labels, 278–280
EOF (end-of-file) conditions, 237–241
eof() function, 238
eof() method, 296
eof() stream state methods, 1097–1102
eofbit stream state, 1097–1102
equal sign (=)
assignment operator (=), 644, 767–768, 772–775
custom definitions, 645–646
enumerator values, setting, 152
overloading, 652–658
potential problems, 645
strings, 133–134