■ ASCII CODE TABLE (CONTINUED) decimal octal hex character decimal octal hex character 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F ` 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 { | } ~ (DEL) 140 141 142 143 144 145 146 147 150 151 152 153 154 155 156 157 160 161 162 163 164 165 166 167 170 171 172 173 174 175 176 177 100 101 102 103 104 105 106 107 110 111 112 113 114 115 116 117 120 121 122 123 124 125 126 127 130 131 132 133 134 135 136 137 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F @ 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 [ \ ] ^ _ ASCII CODE TABLE ■ 799 ■ SCREEN CONTROL SEQUENCES The following escape sequences reflect the ANSI standard for screen control. Replace the # sign by the appropriate decimal number in all cases. ESC[#A Cursor # lines up ESC[#B Cursor # lines down ESC[#C Cursor # characters right ESC[#D Cursor # characters left ESC[z,sH or ESC[z;sf Put cursor in line z and column s ESC[s Save cursor position ESC[u Load saved cursor position ESC[#K # = 0: Delete from cursor position to line end # = 1:Delete from start of line to cursor position # = 2: Delete whole line ESC[2J Clear screen ESC[#(;# ) op m # = 0: all attributes normal # = 1: switch double intensity on # = 4: Underline on (monochrome screens) # = 5: Blink on # = 7: Inverse on # = 3x: Foreground color # = 4x: Background color x = 0: black x = 4: blue x = 1: red x = 5: magenta x = 2: green x = 6: cyan x = 3: yellow x = 7:white ESC[ c1;c2p Change key assignments: The key with decimal code c1 will then return code c2. To enable these escape sequences, you must first load an appropriate screen device driver. To do so for Windows 9x, place the following line in your CONFIG.SYS file DEVICE = C:\Windows\Command\Ansi.sys Win NT and Win 2000 do not supply the ANSI screen control characters. Correspond- ing functions based on system calls are offered for download. 800 ■ APPENDIX ■ LITERATURE International Standard ISO/IEC 14882, Programming Languages—C++; published by American National Standards Institute, New York NY, 1998. International Standard ISO/IEC 9899:1999(E), Programming Languages—C; published by ISO Copyright Office, Case postale 56, CH-1211, Geneva 20, 1999. Stroustrup, Bjarne, The C++ Programming Language, Addison Wesley, 2000. Josuttis, Nicolai, The C++ Standard Library, Addison Wesley, 1999. LITERATURE ■ 801 This page intentionally left blank 803 Note: Italicized page locators indicate figures. index Symbols &, 223, 231, 691 &&, 91 +, 50, 82, 85, 157 ++, 85, 355 -, 82 , 85, 355, 420, 755 *, 82, 233, 255, 355, 691, 755 /, 82 %, 82 ->, 255, 755 =, 87 +=, 50, 87 -=, 87, 355 *=, 87, 157 /=, 87 %=, 87 ==, 88, 159 !=, 88, 159 <, 88, 159 <=, 88, 159 >, 88, 159 >=, 88, 159 <<, 9, 88, 229, 429 >>, 44, 229, 429 ::, 209 ?:, 109 [], 691, 755 //, 91 /, 707 +-, 355 ‘\n’, 51, 187 (), 691 A Abstract classes, 565-585 concrete classes versus, 569 deriving, 569 and inhomogeneous lists, 574, 575-577 pointers and references to, 570 pure virtual methods for, 566 virtual assignment in, 572, 573 Abstraction, 245 Access methods, 274, 275 AccFile class, 656 append() method of, 650, 651 Account class, 267, 392, 393 access methods for, 274 with constructors, 266 defining, 648 methods of, 248 read-only methods in, 276 sample class, 272 Account management index file, 655 accPtr array pointers in, 364 accSort() function, 682, 683 Accuracy, 21, 786 Adapter classes, 753 access to objects in, 761 constructors for, 757 deletion in, 765 insertion in, 759 Addition, 82, 353, 417 Addresses, array, 351 Address operator, 231, 412 Address space, hash file, 658 Algorithm library within C++ standard library, 723 Alignment and fill characters, 67 setting, 67 Ambiguity, 591 Ambiguous keys, 769 American National Standards Institute (ANSI), 3 Ampersand character, 223, 231, 691 Analysis, 245 AND operator, 91 Angled brackets and header files, 47 template arguments stated in, 737 Appending in arrays, 485 at end-of-file, 639 list elements, 465, 467 append() method, 333, 481, 485, 655 for class AccFile, 650 Applications dynamic matrices, 694, 695 index files, 652, 653 inhomogeneous lists, 574-575 area() function defining and calling, 176, 177 Argument pointer, 685 Arguments, 43 access to, 685 arrays as, 356 command line, 366, 367 functions without, 45 macros called with, 123 objects as, 235 objects passed as, 282 passing, 178 pointer arrays as, 683 pointers as, 235 template, 730, 731 variable number of, 684, 685, 686 argv array in memory, 366 Arithmetic operators, 20, 412 binary, 82 83 precedence of, 84 unary, 84, 85 Arithmetic shifts, 709 Arithmetic type conversions and precedence, 707 Arithmetic types, 20, 21 in assignments, 145 arr array in memory, 322 Array elements, 323 addressing, 353 arrays as, 331 index for, 323 pointers interrelated with, 352 Arrays appending/deleting in, 485 as arguments, 356 as array elements, 331 class FloatArr, 427 class representing, 426, 427 defining, 322, 323 dynamic, 461 804 ■ INDEX dynamic storage allocation for, 460, 461 encapsulating, 333 initializing, 324, 325 length of, 357 member, 332 multidimensional, 330, 331 name and address of, 351 parameters declared as, 357 of pointers, 364 pointers moved in, 355 and pointer variables, 351 sample program, 350, 352 as sequential containers, 751 subscript operator for, 427 Arrow operator, 255 Article class, 287, 311 copy constructor of, 310 ASCII code (American Standard Code for Informa- tion Interchange), 17, 800 Assignment operator, 87, 253, 412 overloading, 489 Assignments, 279, 488, 489 implicit type conversions in, 145, 531 type conversions in, 145, 532, 533 virtual, 572, 573. See also Compound assignments Associative arrays, 427 Associative container classes, 769 Associative containers, 750, 751, 768, 769 and bitsets, 751 ATM (Asynchronous Transfer Mode) cells header of, 714, 715 representing, 714 at() method, 165, 761 auto keyword, 205 Automatic lifetime, 199 auto objects, 205 auto specifier, 204 B back() method and container classes vector, deque, and list, 761 Backslashes, 29 bad_cast, 553 badbit, 645 Base classes, 383, 501 accessibility of, 589 access to members in, 503, 509 calling methods in, 513 conversions in references to, 535 converting to, 530, 531 multiple indirect, 590, 591 virtual, 592, 593 with virtual destructors, 548, 549 Base class object assignment, 533 Base class pointer conversion, 535 BaseE1 class, 575 defining, 574 Base initializers, 511, 595, 597, 655 Base subobject, 505 begin() method, 755, 769 Bell Laboratories, 3 Bias, 786 Bidirectional iterators, 755 Binary arithmetic operators, 82, 83 Binary bitwise operators, 713 Binary complement, 143 Binary mode file opened in, 638 Binary operator, 415, 417 and operands, 82 Binary search algorithm, 643 Binary trees, 187 Binding, 551 Bit coded data, 707 Bit-fields, 714 defining, 715 Bitmap container class, 774, 775 Bitmaps raster images represented with, 774, 775 Bit masks, 710, 711 creating, 713 using, 712 Bit patterns retaining, 143 Bits deleting, 711 manipulating, 777 Bitsets, 774, 775, 776, 777 associative containers and, 751 declaring, 775 Bitwise AND operator, 711 Bitwise exclusive OR operator, 711 INDEX ■ 805 Bitwise operators, 412, 706, 707, 751 for bit manipulation, 777 in compound assignments, 713 for creating bit masks, 713 Bitwise OR operator, 711 Bitwise shift operators, 707, 708, 709 Blocks, building, 97 Block scope object defined with, 199 Boolean constants, 23 Boolean operator precedence, 91 Boolean values, 17 output of, 68, 69, 71 types for, 16 bool type, 17, 23, 91 Braces and functions without arguments, 45 and variables, 33 Brackets and parameters for macros, 123 in syntax descriptions, 612 Branches, 125 break statement, 113 sample program containing, 112 Bresenham algorithm, 776, 777 Bubble sort algorithm, 334 Built-in types, 17 C C programming language, 3, 49, 51 standard library header files, 48 C++ characteristics of, 2, 3 conventions in, 31 developing/translating programs in, 6, 7 historical perspective on, 3 keywords in, 30 programming language, 3 sample program, 8, 18 standard library, 7, 9, 48, 173, 723, 751, 753, 773 calc() function, 618, 619 Calling environment, 611 Capacities, 5, 763 capital() function defining, 182 Car class, 504 accessing members of, 506 virtual method table for, 550 Case conversion and macros, 129 Case labels, 111 Casting, 147 Castle class, 514, 515 Cast operator, 147 catch block, 615 nested, 616, 617 syntax of, 612, 613 Catching exceptions, 614 cctype header file, 129 Cell base class and derived classes, 574 cerr stream, 58, 59 cfloat header file, 21 Character by character string comparison, 159 Character codes, 17, 69 Character constants, 23, 25 examples for, 24 Character manipulation standard macros for, 128 Characters, 17 output of, 68, 69 reading and writing, 75 testing, 129 types for, 16 Character set, 17 char arrays, 327 CHAR_MAX, 19 CHAR_MIN, 19 char pointers, 351 array of, 367 sample function, 364 char type, 17, 19, 25, 112 char vectors, 327 cin, 429 cin stream, 47, 49, 58, 61 Class arrays declaring, 329 sample program, 328 Class(es), 5, 245 abstract, 565-585 adapter, 753 806 ■ INDEX associative container, 769 base, 501 container, 753 defining, 246, 247 derived, 501 dynamic members of, 479, 480 dynamic storage allocation for, 458 example of, 246 exception, 611 friend, 424, 425 and friend functions, 423 and global functions, 51 I/O stream, 59 iterator, 755 multiply-derived, 588, 589 naming, 247 operators for, 413. See also Abstract classes; Adapter classes; Base classes; Derived classes; Type conversion for classes class keyword, 247, 257 Class member access operator, 253 Class-specific constants, 309 Class template, 723 defining, 725 for sequences, 753 clear() method, 70, 645 for deleting objects in container classes, 765 for erasing containers, 771 and maps/multimaps, 773 Client class, 303 climits header file, 19 clog stream, 58, 59 close() method, 389 Closing files, 388, 389 CLS macro, 123 cmath header file, 41 Collision resolution, 658 Collisions, 658 Colons after labels, 113 Command line arguments, 367 sample program, 366 Comma operator, 412 syntax for, 101 Commas for separating member initializers, 301 Comments C++ program with, 10 examples of, 11 Comparative operators, 88, 159, 355 Comparator class, 753 compare() function, 689 Comparisons results of, 89, 159, 355 Compiler, 7 Complex declarations, 690 operators and, 691 rules for evaluating, 691 complex header file, 48 Compound assignments, 145 bitwise operators in, 713 demonstration of, 86 operators, 87 Compound conditions, 91 Concatenation operators, 50, 157 Concrete classes abstract classes versus, 569 Conditional expressions, 109 compilation, 790 structogram for, 108 Conditional inclusion, 126, 127 Conditional operator precedence, 109 conio.h header file, 132 Constants, 23, 25 class-specific, 309 const_iterator type, 755 const keyword, 34, 36, 64, 223 const member object declaration, 303 Const objects/methods accessing, 276, 277 pointers to, 361 Constructor calls, 594, 595 and initialization, 595 sample program, 268 in virtual base classes, 597 Constructors, 251, 465 Account class with, 266 for adapter classes, 757 calling, 269, 299 conversion, 442, 443 copy, 279 declaring, 267 INDEX ■ 807 Constructors (continued) default, 269, 279 defining, 266, 267 initializing, 269 with inline definitions, 273 task of, 267 of vector, list, and deque, 757. See also Destructors Container adapters, 752 Container classes, 753, 768 deleting objects in, 765 Containers, 749-782 description of, 751 length and capacity of, 763 positioning and iterating in, 755 types of, 750, 751 Containers Library, 751, 753 Contiguous memory space, 323 continue statement, 113 Control, 28 Controlling expression, 97 ControlPoint class, 424, 425 Conversion constructors, 442, 443 Conversion functions, 443 conversion constructor versus, 445 defining, 445 “Cooked mode,” 386 Copy constructor, 279 effect of standard, 486 for FloatArr class, 486, 487 proprietary version of, 487 cos() function, 40 Counter initializing, 99 count() method and maps/multimaps, 773 count variable, 643 cout, 9, 30, 32 cout stream, 47, 49, 58, 61 Coworker class, 566, 567 assignment for, 572, 573 CPU registers, 205 cstdlib header file, 45 C strings initializing, 326 specializing function template for, 732 and string class, 327 ctime() function, 167 ctype.h header file, 48 Current file position, 381 currentTime() global function, 284, 285 D Data abstraction, 3, 245, 501 bit coding, 707 class-specific, 305 encapsulation, 3, 245, 273 structures, 463 Data blocks transferring, 391 Data handling with traditional procedural programming, 5 Data members, 51, 245 and methods, 505 static, 304, 305 Date class methods, 288 Daytime class operators, 414 DayTime sample class, 280 Debuggers, 7 DEC Alpha workstations and bit-fields, 715 Decimal constant, 23 Decimals floating-point numbers represented as, 25 Declarations, 41 within header files, 47 Declaring sequences, 756, 757 dec manipulator, 63, 73 Decrement operator, 85 and bidirectional iterators, 755 Default arguments, 182, 183 defining, 182, 183 rules for and setting of, 735 of templates, 734, 735 default constructors, 269, 279, 299, 461 Default destructors, 271 default label, 111 Default settings, for flags, 61 #define directive, 121, 127 enum constants contrasted with, 309 working with, 124, 125 delete operator, 455, 456, 457, 459 808 ■ INDEX . operators, 82, 83 Binary bitwise operators, 713 Binary complement, 143 Binary mode file opened in, 638 Binary operator, 415, 417 and operands, 82 Binary search algorithm, 643 Binary trees, 187 Binding,. 352 Arrays appending/deleting in, 485 as arguments, 356 as array elements, 331 class FloatArr, 427 class representing, 426, 427 defining, 322, 323 dynamic, 461 804 ■ INDEX dynamic storage allocation. based on system calls are offered for download. 800 ■ APPENDIX ■ LITERATURE International Standard ISO/IEC 14882, Programming Languages C++; published by American National Standards Institute, New