13.1 Introduction 724
13.2 When Exception Handling Should Be Used 726
13.3 Other Error-Handling Techniques 727
13.4 Basics of C++ Exception Handling: try, throw, catch 728
13.5 A Simple Exception-Handling Example: Divide by Zero 728
13.6 Throwing an Exception 731
13.7 Catching an Exception 732
13.8 Rethrowing an Exception 735
13.9 Exception Specifications 737
13.10 Processing Unexpected Exceptions 737
13.11 Stack Unwinding 738
13.12 Constructors, Destructors and Exception Handling 739
13.13 Exceptions and Inheritance 740
13.14 Processing new Failures 740
13.15 Class auto_ptr and Dynamic Memory Allocation 744
13.16 Standard Library Exception Hierarchy 746
14.1 Introduction 758
14.2 The Data Hierarchy 758
14.3 Files and Streams 760
14.4 Creating a Sequential Access File 761
14.5 Reading Data from a Sequential Access File 765
14.6 Updating Sequential Access Files 771
14.7 Random-Access Files 772
14.8 Creating a Random-Access File 773
14.9 Writing Data Randomly to a Random-Access File 775
14.10 Reading Data Sequentially from a Random-Access File 777
14.11 Example: A Transaction Processing Program 779
14.12 Input/Output of Objects 785
15.1 Introduction 795
15.2 Self-Referential Classes 796
15.3 Dynamic Memory Allocation 797
15.4 Linked Lists 798
15.5 Stacks 811
15.6 Queues 815
15.7 Trees 818
16.1 Introduction 850
16.2 Structure Definitions 850
16.3 Initializing Structures 852
16.4 Using Structures with Functions 853
16.5 typedef 853
16.6 Example: High-Performance Card-shuffling and Dealing Simulation 854
16.7 Bitwise Operators 856
16.8 Bit Fields 865
16.9 Character-handling Library 868
16.10 String Conversion Functions 874
16.11 Search Functions of the String-handling Library 879
16.12 Memory Functions of the String-handling Library 884
16.13 Another Function of the String-handling Library 888
17.1 Introduction 903
17.2 The #include Preprocessor Directive 903
17.3 The #define Preprocessor Directive: Symbolic Constants 904
17.4 The #define Preprocessor Directive: Macros 905
17.5 Conditional Compilation 906
17.6 The #error and #pragma Preprocessor Directives 908
17.7 The # and ## Operators 908
17.8 Line Numbers 908
17.9 Predefined Symbolic Constants 909
17.10 Assertions 909
