Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Thinking In C++, 2nd Edition, Volume 2 Standard Libraries& Advanced Topics - Eckel B..pdf
Скачиваний:
313
Добавлен:
24.05.2014
Размер:
2.09 Mб
Скачать

Index

abort( ), 394

Standard C library function, 380

abstraction

in program design, 432

adapting to usage in different countries, Standard C++ localization library, 25

ambiguity

in multiple inheritance, 347

ANSI/ISO C++ committee, 20

applicator, 100

applying a function to a container, 133

arguments

variable argument list, 67

assert( ), 394

atof( ), 82

atoi( ), 82

automatic type conversion

and exception handling, 390

awk, 103

bad( ), 73

bad_alloc, 24

Standard C++ library exception type, 393

bad_cast

and run-time type identification, 412

Standard C++ library exception type, 393

bad_typeid

run-time type identification, 413 Standard C++ library exception type, 393

badbit, 73

before( )

run-time type identification, 403

behavioral design patterns, 436

binary

printing, 101

bit_string

bit vector in the Standard C++ libraries, 25

bits

bit vector in the Standard C++ libraries, 25

bloat, preventing template bloat, 143 Booch, Grady, 473

book errors, reporting, 21 bubble sort, 143 buffering, iostream, 76 bytes, reading raw, 73

C

basic data types, 67

error handling in C, 371

localtime( ), Standard library, 115

580

rand( ), Standard library, 115 Standard C, 20

Standard C library function abort( ), 380 Standard C library function strncpy( ), 384 Standard C library function strtok( ), 201 standard I/O library, 89

Standard library macro toupper( ), 104

C++

ANSI/ISO C++ committee, 20 CGI programming in C++, 543 GNU C++ Compiler, 543 sacred design goals of C++, 68 Standard C++, 20

Standard string class, 69

Standard Template Library (STL)., 543 template, 496

calloc( ), 128

cast

casting away const and/or volatile, 423 dynamic_cast, 423

new cast syntax, 422

run-time type identification, casting to intermediate levels, 408

searching for, 423

catch, 375

catching any exception, 379

CGI

connecting Java to CGI, 541

crash course in CGI programming, 541 GET, 541

POST, 541, 547 programming in C++, 543

chaining, in iostreams, 70

change

vector of change, 432, 478

char* iostreams, 69

character

transforming strings to typed values, 82

class

class hierarchies and exception handling, 391 maintaining library source, 104 most-derived class, 350

nested class, and run-time type identification, 407 Standard C++ string, 69

virtual base classes, 348 wrapping, 63

cleaning up the stack during exception handling, 382

clear( ), 74, 117

command line

interface, 72

committee, ANSI/ISO C++, 20

compile time

error checking, 67

compiler error tests, 108

complex number class, 25

composition

and design patterns, 432

console I/O, 72

const

casting away const and/or volatile, 423

const_cast, 423

constructor

and exception handling, 383, 386, 397 default constructor, 449

default constructor synthesized by the compiler, 433

failing, 398

order of constructor and destructor calls, 410

581

private constructor, 433

simulating virtual constructors, 445

virtual base classes with a default constructor, 351

virtual functions inside constructors, 446

controlling

template instantiation, 144

conversion

automatic type conversions and exception handling, 390

Coplien, James, 446

couplet, 505

creating

manipulators, 100

creational design patterns, 436, 474

data

C data types, 67

database

object-oriented database, 357

datalogger, 111

decimal

dec in iostreams, 70

dec manipulator in iostreams, 95 formatting, 89

default

constructor, 449

default constructor

synthesized by the compiler, 433

delete, 85

overloading array new and delete, 385

deserialization, and persistence, 357

design

abstraction in program design, 432

and efficiency, 143

sacred design goals of C++, 68

design patterns, 431

behavioral, 436 creational, 436, 474 factory method, 474 observer, 451 prototype, 478, 488 structural, 436

vector of change, 432, 478 visitor, 465

destructor

and exception handling, 382, 398

order of constructor and destructor calls, 410

diamond

in multiple inheritance, 347

dispatching

double dispatching, 461, 500 multiple dispatching, 461

domain_error

Standard C++ library exception type, 393

double dispatching, 461, 500

downcast

type-safe downcast in run-time type identification, 403

dynamic_cast

and exceptions, run-time type identification, 412

difference between dynamic_cast and typeid( ), run-time type identification, 409

run-time type identification, 403

effectors, 101

efficiency

design, 143

run-time type identification, 415

ellipses, with exception handling, 379

582

endl, iostreams, 70, 96 ends, iostreams, 70, 83 enumeration, 107

eof( ), 73 eofbit, 73 errno, 372 error

compile-time checking, 67

error handling in C, 371

handling, iostream, 73

recovery, 371

reporting errors in book, 21

exception handling, 371

asynchronous events, 393 atomic allocations for safety, 388 automatic type conversions, 390

bad_alloc Standard C++ library exception type, 393

bad_cast Standard C++ library exception type, 393

bad_typeid, 413

bad_typeid Standard C++ library exception type, 393

catching any exception, 379 class hierarchies, 391

cleaning up the stack during a throw, 382 constructors, 383, 386

constructors, 397 destructors, 382, 398

domain_error Standard C++ library exception type, 393

dynamic_cast, run-time type identification, 412 ellipses, 379

exception handler, 375 exception hierarchies, 396 exception matching, 390

exception Standard C++ library exception type, 392

invalid_argument Standard C++ library exception type, 393

length_error Standard C++ library exception type, 393

logic_error Standard C++ library exception type, 392

multiple inheritance, 396 naked pointers, 386

object slicing and exception handling, 390, 392 operator new placement syntax, 385

out_of_range Standard C++ library exception type, 393

overflow_error Standard C++ library exception type, 393

overhead, 398

programming guidelines, 393

range_error Standard C++ library exception type, 393

references, 389, 396 re-throwing an exception, 380 run-time type identification, 402

runtime_error Standard C++ library exception type, 392

set_terminate( ), 381 set_unexpected( ), 377 specification, 376

Standard C++ library exception type, 392 Standard C++ library exceptions, 392 standard exception classes, 24 termination vs. resumption, 376 throwing & catching pointers, 397 throwing an exception, 374

typeid( ), 413

typical uses of exceptions, 394 uncaught exceptions, 380 unexpected( ), 377

unexpected, filtering exceptions, 386

583

extensible, 505 extensible program, 67 extractor, 69

factory method, 474 fail( ), 73

failbit, 73, 117 file

iostreams, 69, 72

FILE, stdio, 64

fill

width, precision, iostream, 91

filtering unexpected exceptions, 386

flags, iostreams format, 88

flush, iostreams, 70, 96

format flags, iostreams, 88

formatting

formatting manipulators, iostreams, 95 in-core, 81

iostream internal data, 88 output stream, 87

free( ), 85

freeze( ), 85

freezing a strstream, 85

fseek( ), 78

FSTREAM.H, 74

function

applying a function to a container, 133 function objects, 24

function templates, 126 member function template, 137 pointer to a function, 382

run-time type identification without virtual functions, 402, 407

GET, 541

get pointer, 79, 84, 117

get( ), 72, 75

overloaded versions, 73

with streambuf, 78

getline( ), 72, 75, 84

GNU C++ Compiler, 543

good( ), 73

goto

non-local goto, setjmp( ) and longjmp( ), 372

graphical user interface (GUI), 72

Grey, Jan, 354

GUI

graphical user interface, 72

handler, exception, 375

hex, 95

hex (hexadecimal) in iostreams, 70

hex( ), 90

hexadecimal, 89

hierarchy

object-based hierarchy, 344

I/O

C standard library, 89 console, 72

ifstream, 69, 74, 77

ignore( ), 75

implementation

limits, 24

in-core formatting, 81

indexOf( ), 485

inheritance

and design patterns, 432

584

multiple inheritance (MI), 344

multiple inheritance and run-time type identification, 409, 413, 418

templates, 139

input

line at a time, 72

inserter, 69

interface

command-line, 72 graphical user (GUI), 72

repairing an interface with multiple inheritance, 364

interpreter, printf( ) run-time, 66

invalid_argument

Standard C++ library exception type, 393

IOSTREAM.H, 74

iostreams

and Standard C++ library string class, 24 applicator, 100

automatic, 90 bad( ), 73 badbit, 73

binary printing, 101 buffering, 76

clear( ), 117 dec, 95

dec (decimal), 70 effectors, 101 endl, 96

ends, 70 eof( ), 73 eofbit, 73

error handling, 73 fail( ), 73

failbit, 73, 117

files, 72

fill character, 113 fixed, 97

flush, 70, 96 format flags, 88

formatting manipulators, 95 fseek( ), 78

get pointer, 117 get( ), 75 getline( ), 75 good( ), 73 hex, 95

hex (hexadecimal), 70 ignore( ), 75

internal, 97

internal formatting data, 88 ios::app, 83

ios::ate, 83 ios::basefield, 89 ios::beg, 79 ios::cur, 79 ios::dec, 90 ios::end, 79 ios::fill( ), 91 ios::fixed, 90 ios::flags( ), 88 ios::hex, 90 ios::internal, 91 ios::left, 90 ios::oct, 90 ios::out, 83 ios::precision( ), 91 ios::right, 90 ios::scientific, 90 ios::showbase, 89

585

ios::showpoint, 89 ios::showpos, 89 ios::skipws, 88 ios::stdio, 89 ios::unitbuf, 89 ios::uppercase, 89 ios::width( ), 91 left, 97

manipulators, creating, 100 newline, manipulator for, 100 noshowbase, 97 noshowpoint, 97 noshowpos, 97

noskipws, 97 nouppercase, 97 oct (octal), 70, 95 open modes, 76 precision( ), 113 rdbuf( ), 77 read( ), 117

read( ) and write( ), 359 resetiosflags, 98

right, 97 scientific, 97 seekg( ), 79 seeking in, 78 seekp( ), 79 setbase, 98 setf( ), 88, 113 setfill, 98 setiosflags, 98 setprecision, 98 setw, 98

setw( ), 113 showbase, 97

showpoint, 97 showpos, 97 skipws, 97 tellg( ), 78 tellp( ), 78

unit buffering, 89 uppercase, 97

width, fill and precision, 91 ws, 96

istream, 69 istringstreams, 69 istrstream, 69, 81 iterator, 432 keyword

catch, 375

Lajoie, Josée, 422 Lee, Meng, 151 length_error

Standard C++ library exception type, 393

library

C standard I/O, 89 maintaining class source, 104

standard template library (STL), 151

limits, implementation, 24

LIMITS.H, 103

line input, 72

localtime( ), 115

logic_error

Standard C++ library exception type, 392

longjmp( ), 372

maintaining class library source, 104

malloc( ), 85, 128

manipulator, 70

586

creating, 100

iostreams formatting, 95

member

member function template, 137

memory

a memory allocation system, 128

MI

multiple inheritance, 344

modes, iostream open, 76

modulus operator, 115

monolithic, 344

multiple dispatching, 461

multiple inheritance, 344

ambiguity, 347

and exception handling, 396

and run-time type identification, 409, 413, 418 and upcasting, 354

avoiding, 364 diamonds, 347

duplicate subobjects, 346 most-derived class, 350 overhead, 353

pitfall, 360

repairing an interface, 364 upcasting, 347

virtual base classes, 348

virtual base classes with a default constructor, 351

naked pointers, and exception handling, 386

namespace, 103

network programming

CGI POST, 547

CGI programming in C++, 543

connecting Java to CGI, 541

crash course in CGI programming, 541

new, 85

overloading array new and delete, 385 placement syntax, 385

newline, 100

non-local goto

setjmp( ) and longjmp( ), 372

notifyObservers( ), 451, 454

null references, 412

numerical operations

efficiency using the Standard C++ Numerics library, 25

object

object-based hierarchy, 344 object-oriented database, 357 object-oriented programming, 402 slicing, and exception handling, 390, 392 temporary, 103

Observable, 451

observer design pattern, 451

oct, 95

ofstream, 69, 74

open modes, iostreams, 76

operator

[], 389 <<, 69 >>, 69

modulus, 115

operator overloading sneak preview, 68

order

of constructor and destructor calls, 410

ostream, 69, 75

ostringstreams, 69

587

ostrstream, 69, 81, 107

out_of_range

Standard C++ library exception type, 393

output

stream formatting, 87 strstreams, 83

overflow_error

Standard C++ library exception type, 393

overhead

exception handling, 398 multiple inheritance, 353

overloading

array new and delete, 385

overview, chapters, 17 pair template class, 24 Park, Nick, 135

patterns, design patterns, 431 perror( ), 372

persistence, 360

persistent object, 357

pitfalls

in multiple inheritance, 360

pointer

finding exact type of a base pointer, 402 pointer to a function, 382

to member, 134

polymorphism, 414, 493, 508

POST, 541

CGI, 547

precision

width, fill, iostream, 91

precision( ), 113

preprocessor

stringizing, 93

printf( ), 66, 87

error code, 371 run-time interpreter, 66

private

constructor, 433

programming, object-oriented, 402

protected, 421

prototype, 478

design pattern, 488

put pointer, 78

raise( ), 372

rand( ), 115

RAND_MAX, 115

range_error

Standard C++ library exception type, 393

rapid development, 143

raw, reading bytes, 73

rdbuf( ), 77

read( ), 73, 117

iostream read( ) and write( ), 359

reading raw bytes, 73

realloc( ), 128

reference

and exception handling, 389, 396 and run-time type identification, 411 null references, 412

reinterpret_cast, 423

reporting errors in book, 21

resumption, 379

termination vs. resumption, exception handling, 376

re-throwing an exception, 380

588

root, 396

RTTI

misuse of RTTI, 489, 505

run-time interpreter for printf( ), 66

run-time type identification, 24, 360, 401

and efficiency, 415

and exception handling, 402

and multiple inheritance, 409, 413, 418 and nested classes, 407

and references, 411 and templates, 410 and upcasting, 402 and void pointers, 410 bad_cast, 412 bad_typeid, 413 before( ), 403

building your own, 418

casting to intermediate levels, 408

difference between dynamic_cast and typeid( ), 409

dynamic_cast, 403 mechanism & overhead, 418 misuse, 414

RTTI, abbreviation for, 402 shape example, 401 typeid( ), 402

typeid( ) and built-in types, 406 typeinfo, 402, 418

type-safe downcast, 403 vendor-defined, 402 VTABLE, 418

when to use it, 414

without virtual functions, 402, 407

runtime_error

Standard C++ library exception type, 392

Schwarz, Jerry, 101

sed, 103

seekg( ), 79

seeking in iostreams, 78

seekp( ), 79

serialization, 115

and persistence, 357

set

STL set class example, 152

set_new_handler, 24 set_terminate( ), 381 set_unexpected( )

exception handling, 377

setChanged( ), 454

setf( ), iostreams, 88, 113

setjmp( ), 372

setw( ), 113

shape

example, and run-time type identification, 401

signal( ), 372, 393

simulating virtual constructors, 445

singleton, 432

size

sizeof, 360

slicing

object slicing and exception handling, 390, 392

Smalltalk, 344

sort

bubble sort, 143

specification

exception, 376

standard

589

Standard C, 20

Standard C++, 20

Standard C++ libraries

algorithms library, 25 bit_string bit vector, 25 bits bit vector, 25 complex number class, 25 containers library, 25 diagnostics library, 24 general utilities library, 24 iterators library, 25 language support, 24 localization library, 25 numerics library, 25

standard exception classes, 24 standard library exception types, 392 standard template library (STL), 151 string class, 69

standard template library

operations on, with algorithms, 25 set class example, 152

static_cast, 423

stdio, 63

STDIO.H, 74

Stepanov, Alexander, 151

STL

C++ Standard Template Library, 543 standard template library, 151

storage

storage allocation functions for the STL, 24

str( ), strstream, 85

stream, 69

output formatting, 87

streambuf, 77

and get( ), 78

streampos, moving, 78

string

Standard C++ library string class, 69 transforming character strings to typed values, 82

String

indexOf( ), 485 substring( ), 485

stringizing, preprocessor, 93

strncpy( )

Standard C library function strncpy( ), 384

Stroustrup, Bjarne, 15

strstr( ), 108

strstream, 81, 108

automatic storage allocation, 84 ends, 83

freezing, 85 output, 83 str( ), 85

user-allocated storage, 81 zero terminator, 83

strtok( )

Standard C library function, 201

structural design patterns, 436

subobject

duplicate subobjects in multiple inheritance, 346

substring( ), 485

tellg( ), 78

tellp( ), 78

template

and inheritance, 139

and run-time type identification, 410

C++ Standard Template Library (STL), 543

590

controlling instantiation, 144 function templates, 126

in C++, 496

member function template, 137 preventing template bloat, 143 requirements of template classes, 141 standard template library (STL), 151

temporary

object, 103

terminate( ), 24

uncaught exceptions, 380

termination

vs. resumption, exception handling, 376

terminator

zero for strstream, 83

throwing an exception, 374 toupper( ), 104

transforming character strings to typed values, 82

try block, 375

tuple-making template function, 24 type

automatic type conversions and exception handling, 390

built-in types and typeid( ), run-time type identification, 406

finding exact type of a base pointer, 402

new cast syntax, 422

run-time type identification (RTTI), 401

type-safe downcast in run-time type identification, 403

typeid( )

and built-in types, run-time type identification, 406

and exceptions, 413

difference between dynamic_cast and typeid( ), run-time type identification, 409

run-time type identification, 402

typeinfo

run-time type identification, 402

structure, 418

TYPEINFO.H, 411

ULONG_MAX, 103

uncaught exceptions, 380

unexpected( ), 24

exception handling, 377

unit buffering, iostream, 89

Unix, 103

upcasting

and multiple inheritance, 347, 354

and run-time type identification, 402

Urlocker, Zack, 369

value

transforming character strings to typed values, 82

variable

variable argument list, 67

vector of change, 432, 478, 508

vendor-defined run-time type identification, 402

virtual

run-time type identification without virtual functions, 402, 407

simulating virtual constructors, 445

virtual base classes, 348

virtual base classes with a default constructor, 351

virtual functions inside constructors, 446

visitor pattern, 465

void

591

void pointers and run-time type identification,

and run-time type identification, 418

410

wrapping, class, 63

volatile

write( ), 73

casting away const and/or volatile, 423

iostream read( ) and write( ), 359

VPTR, 360, 446

ws, 96

VTABLE, 446

zero terminator, strstream, 83

 

592

Соседние файлы в предмете Программирование