C++ How To Program 10th Edition - Cerritos College

C++ How To Program 10th Edition Table of Contents Preface xxiii Before You Begin xxxix 1 Introduction to Computers and C++ 1 1.1 Introduction...

1606 downloads 6709 Views 417KB Size
C++ How To Program 10th Edition Table of Contents Preface xxiii Before You Begin xxxix

1

Introduction to Computers and C++ 1

1.1 1.2 1.3 1.3.1 1.3.2 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.10.1 1.10.2 1.10.3 1.11 1.11.1 1.11.2 1.11.3 1.11.4 1.12 1.13 1.14 1.15 1.16

Introduction Computers and the Internet in Industry and Research Hardware and Software Moore’s Law Computer Organization Data Hierarchy Machine Languages, Assembly Languages and High-Level Languages C and C++ Programming Languages Introduction to Object Technology Typical C++ Development Environment Test-Driving a C++ Application Compiling and Running an Application in Visual Studio 2015 for Windows Compiling and Running Using GNU C++ on Linux Compiling and Running with Xcode on Mac OS X Operating Systems Windows–A Proprietary Operating System Linux–An Open-Source Operating System Apple’s OS X; Apple’s iOS for iPhone®, iPad® and iPod Touch® Devices Google’s Android The Internet and the World Wide Web Some Key Software Development Terminology C++11 and C++14: The Latest C++ Versions Boost C++ Libraries Keeping Up to Date with Information Technologies

2

Introduction to C++ Programming, Input/Output and Operators

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8

Introduction First Program in C++: Printing a Line of Text Modifying Our First C++ Program Another C++ Program: Adding Integers Memory Concepts Arithmetic Decision Making: Equality and Relational Operators Wrap-Up

3

Introduction to Classes, Objects, Member Functions and Strings

3.1 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5

Introduction Test-Driving an Account Object Instantiating an Object Headers and Source-Code Files Calling Class Account’s getName Member Function Inputting a string with getline Calling Class Account’s setName Member Function

3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4 3.4.1 3.4.2 3.4.3 3.5 3.6 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.7

Account Class with a Data Member and Set and Get Member Functions Account Class Definition Keyword class and the Class Body Data Member name of Type string setName Member Function getName Member Function Access Specifiers private and public Account UML Class Diagram Account Class: Initializing Objects with Constructors Defining an Account Constructor for Custom Object Initialization Initializing Account Objects When They’re Created Account UML Class Diagram with a Constructor Software Engineering with Set and Get Member Functions Account Class with a Balance; Data Validation Data Member balance Two-Parameter Constructor with Validation deposit Member Function with Validation getBalance Member Function Manipulating Account Objects with Balances Account UML Class Diagram with a Balance and Member Functions deposit and getBalance Wrap-Up

4

Algorithm Development and Control Statements: Part 1

4.1 4.2 4.3 4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.5 4.6 4.6.1 4.6.2 4.6.3 4.6.4 4.7 4.8 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.10 4.10.1 4.10.2 4.10.3 4.10.4 4.10.5 4.10.6 4.11

Introduction Algorithms Pseudocode Control Structures Sequence Structure Selection Statements Iteration Statements Summary of Control Statements if Single-Selection Statement if…else Double-Selection Statement Nested if…else Statements Dangling-else Problem Blocks Conditional Operator (?:) Student Class: Nested if…else Statements while Iteration Statement Formulating Algorithms: Counter-Controlled Iteration Pseudocode Algorithm with Counter-Controlled Iteration Implementing Counter-Controlled Iteration Notes on Integer Division and Truncation Arithmetic Overflow Input Validation Formulating Algorithms: Sentinel-Controlled Iteration Top-Down, Stepwise Refinement: The Top and First Refinement Proceeding to the Second Refinement Implementing Sentinel-Controlled Iteration Converting Between Fundamental Types Explicitly and Implicitly Formatting Floating-Point Numbers Unsigned Integers and User Input Formulating Algorithms: Nested Control Statements

4.11.1 4.11.2 4.11.3 4.11.4 4.11.5 4.11.6 4.11.7 4.12 4.13 4.14 4.15

Problem Statement Top-Down, Stepwise Refinement: Pseudocode Representation of the Top Top-Down, Stepwise Refinement: First Refinement Top-Down, Stepwise Refinement: Second Refinement Complete Second Refinement of the Pseudocode Program That Implements the Pseudocode Algorithm Preventing Narrowing Conversions with List Initialization Compound Assignment Operators Increment and Decrement Operators Fundamental Types Are Not Portable Wrap-Up

5

Control Statements: Part 2; Logical Operators

5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.7.1 5.7.2 5.8 5.9 5.10 5.10.1 5.10.2 5.11 5.11.1 5.11.2 5.11.3 5.11.4 5.11.5 5.12 5.13 5.14

Introduction Essentials of Counter-Controlled Iteration for Iteration Statement Examples Using the for Statement Application: Summing Even Integers Application: Compound-Interest Calculations Case Study: Integer-Based Monetary Calculations with Class DollarAmount Demonstrating Class DollarAmount Class DollarAmount do…while Iteration Statement switch Multiple-Selection Statement break and continue Statements break Statement continue Statement Logical Operators Logical AND (&&) Operator Logical OR (||) Operator Short-Circuit Evaluation Logical Negation (!) Operator Logical Operators Example Confusing the Equality (==) and Assignment (=) Operators Structured-Programming Summary Wrap-Up

6

Functions and an Introduction to Recursion

6.1 6.2 6.3 6.4 6.5 6.5.1 6.5.2 6.5.3 6.6 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.7.5

Introduction Program Components in C++ Math Library Functions Function Prototypes Function-Prototype and Argument-Coercion Notes Function Signatures and Function Prototypes Argument Coercion Argument-Promotion Rules and Implicit Conversions C++ Standard Library Headers Case Study: Random-Number Generation Rolling a Six-Sided Die Rolling a Six-Sided Die 60,000,000 Times Randomizing the Random-Number Generator with srand Seeding the Random-Number Generator with the Current Time Scaling and Shifting Random Numbers

6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15 6.16 6.17 6.18 6.19 6.20 6.21

Case Study: Game of Chance; Introducing Scoped enums C++11 Random Numbers Scope Rules Function-Call Stack and Activation Records Inline Functions References and Reference Parameters Default Arguments Unary Scope Resolution Operator Function Overloading Function Templates Recursion Example Using Recursion: Fibonacci Series Recursion vs. Iteration Wrap-Up

7

Class Templates array and vector; Catching Exceptions

7.1 7.2 7.3 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.4.6 7.4.7 7.4.8 7.5 7.6 7.7 7.7.1 7.7.2 7.7.3 7.8 7.9 7.10 7.11

Introduction Arrays Declaring arrays Examples Using arrays Declaring an array and Using a Loop to Initialize the array’s Elements Initializing an array in a Declaration with an Initializer List Specifying an array’s Size with a Constant Variable and Setting array Elements with Calculations Summing the Elements of an array Using a Bar Chart to Display array Data Graphically Using the Elements of an array as Counters Using arrays to Summarize Survey Results Static Local arrays and Automatic Local arrays Range-Based for Statement Case Study: Class GradeBook Using an array to Store Grades Sorting and Searching arrays Sorting Searching Demonstrating Functions sort and binary_search Multidimensional arrays Case Study: Class GradeBook Using a Two-Dimensional array Introduction to C++ Standard Library Class Template vector Wrap-Up

8

Pointers

8.1 8.2 8.2.1 8.2.2 8.2.3 8.3 8.3.1 8.3.2 8.3.3 8.4 8.5 8.5.1 8.5.2

Introduction Pointer Variable Declarations and Initialization Declaring Pointers Initializing Pointers Null Pointers Prior to C++11 Pointer Operators Address (&) Operator Indirection (*) Operator Using the Address (&) and Indirection (*) Operators Pass-by-Reference with Pointers Built-In Arrays Declaring and Accessing a Built-In Array Initializing Built-In Arrays

8.5.3 8.5.4 8.5.5 8.5.6 8.5.7 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 8.10 8.11 8.12

Passing Built-In Arrays to Functions Declaring Built-In Array Parameters C++11: Standard Library Functions begin and end Built-In Array Limitations Built-In Arrays Sometimes Are Required Using const with Pointers Nonconstant Pointer to Nonconstant Data Nonconstant Pointer to Constant Data Constant Pointer to Nonconstant Data Constant Pointer to Constant Data sizeof Operator Pointer Expressions and Pointer Arithmetic Adding Integers to and Subtracting Integers from Pointers Subtracting Pointers Pointer Assignment Cannot Dereference a void* Comparing Pointers Relationship Between Pointers and Built-In Arrays Pointer/Offset Notation Pointer/Offset Notation with the Built-In Array’s Name as the Pointer Pointer/Subscript Notation Demonstrating the Relationship Between Pointers and Built-In Arrays Pointer-Based Strings (Optional) Note About Smart Pointers Wrap-Up

9

Classes: A Deeper Look

9.1 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.2.5 9.2.6 9.2.7 9.2.8 9.2.9 9.2.10 9.2.11 9.2.12 9.2.13 9.3 9.4 9.5 9.6 9.6.1 9.6.2 9.7 9.8 9.8.1 9.8.2 9.8.3

Introduction Time Class Case Study: Separating Interface from Implementation Interface of a Class Separating the Interface from the Implementation Time Class Definition Time Class Member Functions Scope Resolution Operator (::) Including the Class Header in the Source-Code File Time Class Member Function setTime and Throwing Exceptions Time Class Member Function toUniversalString and String Stream Processing Time Class Member Function toStandardString Implicitly Inlining Member Functions Member Functions vs. Global Functions Using Class Time Object Size Compilation and Linking Process Class Scope and Accessing Class Members Access Functions and Utility Functions Time Class Case Study: Constructors with Default Arguments Constructors with Default Arguments Overloaded Constructors and C++11 Delegating Constructors Destructors When Constructors and Destructors Are Called Constructors and Destructors for Objects in Global Scope Constructors and Destructors for Non-static Local Objects Constructors and Destructors for static Local Objects

9.8.4 9.9 9.10 9.11 9.12 9.13 9.14 9.14.1 9.14.2 9.15 9.15.1 9.15.2 9.15.3 9.15.4 9.16

Demonstrating When Constructors and Destructors Are Called Time Class Case Study: A Subtle Trap–Returning a Reference or a Pointer to a private Data Member Default Memberwise Assignment const Objects and const Member Functions Composition: Objects as Members of Classes friend Functions and friend Classes Using the this Pointer Implicitly and Explicitly Using the this Pointer to Access an Object’s Data Members Using the this Pointer to Enable Cascaded Function Calls static Class Members Motivating Classwide Data Scope and Initialization of static Data Members Accessing static Data Members Demonstrating static Data Members Wrap-Up

10

Operator Overloading; Class string

10.1 10.2 10.3 10.3.1 10.3.2 10.3.3 10.3.4 10.4 10.5 10.6 10.7 10.8 10.9 10.10 10.10.1 10.10.2 10.11 10.12 10.13 10.14 10.15

Introduction Using the Overloaded Operators of Standard Library Class string Fundamentals of Operator Overloading Operator Overloading Is Not Automatic Operators That You Do Not Have to Overload Operators That Cannot Be Overloaded Rules and Restrictions on Operator Overloading Overloading Binary Operators Overloading the Binary Stream Insertion and Stream Extraction Operators Overloading Unary Operators Overloading the Increment and Decrement Operators Case Study: A Date Class Dynamic Memory Management Case Study: Array Class Using the Array Class Array Class Definition Operators as Member vs. Non-Member Functions Converting Between Types explicit Constructors and Conversion Operators Overloading the Function Call Operator () Wrap-Up

11

Object-Oriented Programming: Inheritance

11.1 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.3.5 11.4 11.5 11.6

Introduction Base Classes and Derived Classes CommunityMember Class Hierarchy Shape Class Hierarchy Relationship between Base and Derived Classes Creating and Using a CommissionEmployee Class Creating a BasePlusCommissionEmployee Class Without Using Inheritance Creating a CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy Using protected Data CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy Using private Data Constructors and Destructors in Derived Classes public, protected and private Inheritance Wrap-Up

12

Object-Oriented Programming: Polymorphism

12.1 12.2 12.3 12.3.1 12.3.2 12.3.3 12.4 12.4.1 12.4.2 12.4.3 12.4.4 12.4.5 12.4.6 12.4.7 12.5 T 12.6 12.6.1 12.6.2 12.7 12.7.1 12.7.2 12.7.3 12.7.4 12.7.5 12.8 12.9

Introduction Introduction to Polymorphism: Polymorphic Video Game Relationships Among Objects in an Inheritance Hierarchy Invoking Base-Class Functions from Derived-Class Objects Aiming Derived-Class Pointers at Base-Class Objects Derived-Class Member-Function Calls via Base-Class Pointers Virtual Functions and Virtual Destructors Why virtual Functions Are Useful Declaring virtual Functions Invoking a virtual Function Through a Base-Class Pointer or Reference Invoking a virtual Function Through an Object’s Name virtual Functions in the CommissionEmployee Hierarchy virtual Destructors C++11: final Member Functions and Classes Type Fields and switch Statements Abstract Classes and Pure virtual Functions Pure virtual Functions Device Drivers: Polymorphism in Operating Systems Case Study: Payroll System Using Polymorphism Creating Abstract Base Class Employee Creating Concrete Derived Class SalariedEmployee Creating Concrete Derived Class CommissionEmployee Creating Indirect Concrete Derived Class BasePlusCommissionEmployee Demonstrating Polymorphic Processing (Optional) Polymorphism, Virtual Functions and Dynamic Binding “Under the Hood” Case Study: Payroll System Using Polymorphism and Runtime Type Information with Downcasting, dynamic_cast, typeid and type_info 567 12.10 Wrap-Up

13

Stream Input/Output: A Deeper Look

13.1 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.5 13.6 13.6.1 13.6.2 13.6.3 13.6.4 13.7 13.7.1 13.7.2

Introduction Streams Classic Streams vs. Standard Streams iostream Library Headers Stream Input/Output Classes and Objects Stream Output Output of char* Variables Character Output Using Member Function put Stream Input get and getline Member Functions istream Member Functions peek, putback and ignore Type-Safe I/O Unformatted I/O Using read, write and gcount Stream Manipulators: A Deeper Look Integral Stream Base: dec, oct, hex and setbase Floating-Point Precision (precision, setprecision) Field Width (width, setw) User-Defined Output Stream Manipulators Stream Format States and Stream Manipulators Trailing Zeros and Decimal Points (showpoint) Justification (left, right and internal)

13.7.3 13.7.4 13.7.5 13.7.6 13.7.7 13.7.8 13.8 13.9 13.10

Padding (fill, setfill) Integral Stream Base (dec, oct, hex, showbase) Floating-Point Numbers; Scientific and Fixed Notation (scientific, fixed) Uppercase/Lowercase Control (uppercase) Specifying Boolean Format (boolalpha) Setting and Resetting the Format State via Member Function flags Stream Error States Tying an Output Stream to an Input Stream Wrap-Up

14

File Processing

14.1 I 14.2 14.3 14.3.1 14.3.2 14.3.3 14.3.4 14.3.5 14.3.6 14.3.7 14.4 14.4.1 14.4.2 14.4.3 14.4.4 14.5 14.6 14.7 14.8 14.8.1 14.8.2 14.8.3 14.8.4 14.9 14.9.1 14.9.2 14.10 14.11 14.12 14.13

ntroduction Files and Streams Creating a Sequential File Opening a File Opening a File via the open Member Function Testing Whether a File Was Opened Successfully Overloaded bool Operator Processing Data Closing a File Sample Execution Reading Data from a Sequential File Opening a File for Input Reading from the File File-Position Pointers Case Study: Credit Inquiry Program C++14: Reading and Writing Quoted Text Updating Sequential Files Random-Access Files Creating a Random-Access File Writing Bytes with ostream Member Function write Converting Between Pointer Types with the reinterpret_cast Operator Credit-Processing Program Opening a File for Output in Binary Mode Writing Data Randomly to a Random-Access File Opening a File for Input and Output in Binary Mode Positioning the File-Position Pointer Reading from a Random-Access File Sequentially Case Study: A Transaction-Processing Program Object Serialization Wrap-Up

15

Standard Library Containers and Iterators

15.1 15.2 15.3 15.4 15.5 15.5.1 15.5.2 15.5.3 15.6 15.6.1

Introduction Introduction to Containers Introduction to Iterators Introduction to Algorithms Sequence Containers vector Sequence Container list Sequence Container deque Sequence Container Associative Containers multiset Associative Container

15.6.2 15.6.3 15.6.4 15.7 15.7.1 15.7.2 15.7.3 15.8 15.9

set Associative Container multimap Associative Container map Associative Container Container Adapters stack Adapter queue Adapter priority_queue Adapter Class bitset Wrap-Up

16

Standard Library Algorithms

16.1 Introduction 16.2 Minimum Iterator Requirements 16.3 Lambda Expressions 16.3.1 Algorithm for_each 16.3.2 Lambda with an Empty Introducer 16.3.3 Lambda with a Nonempty Introducer–Capturing Local Variables 16.3.4 Lambda Return Types 16.4 Algorithms 16.4.1 fill, fill_n, generate and generate_n 16.4.2 equal, mismatch and lexicographical_compare 16.4.3 remove, remove_if, remove_copy and remove_copy_if 16.4.4 replace, replace_if, replace_copy and replace_copy_if 16.4.5 Mathematical Algorithms 16.4.6 Basic Searching and Sorting Algorithms 16.4.7 swap, iter_swap and swap_ranges 16.4.8 copy_backward, merge, unique and reverse 16.4.9 inplace_merge, unique_copy and reverse_copy 16.4.10 Set Operations 16.4.11 lower_bound, upper_bound and equal_range 16.4.12 min, max, minmax and minmax_element 16.5 Function Objects 16.6 Standard Library Algorithm Summary 16.7 Wrap-Up

17

Exception Handling: A Deeper Look

17.1 17.2 17.2.1 17.2.2 17.2.3 17.2.4 17.2.5 17.2.6 17.2.7 17.3 17.4 17.5 17.6 17.7 17.7.1 17.7.2 17.8

Introduction Exception-Handling Flow of Control; Defining an Exception Class Defining an Exception Class to Represent the Type of Problem That Might Occur Demonstrating Exception Handling Enclosing Code in a try Block Defining a catch Handler to Process a DivideByZeroException Termination Model of Exception Handling Flow of Program Control When the User Enters a Nonzero Denominator Flow of Program Control When the User Enters a Denominator of Zero Rethrowing an Exception Stack Unwinding When to Use Exception Handling noexcept: Declaring Functions That Do Not Throw Exceptions Constructors, Destructors and Exception Handling Destructors Called Due to Exceptions Initializing Local Objects to Acquire Resources Processing new Failures

17.8.1 17.8.2 17.8.3 17.9 17.9.1 17.9.2 17.10 17.11

new Throwing bad_alloc on Failure new Returning nullptr on Failure Handling new Failures Using Function set_new_handler Class unique_ptr and Dynamic Memory Allocation unique_ptr Ownership unique_ptr to a Built-In Array Standard Library Exception Hierarchy Wrap-Up

18

Introduction to Custom Templates

18.1 18.2 18.2.1 18.2.2 18.2.3 18.2.4 18.2.5 18.3 18.4 18.5 18.6 18.7

Introduction Class Templates Creating Class Template Stack Class Template Stack’s Data Representation Class Template Stack’s Member Functions Declaring a Class Template’s Member Functions Outside the Class Template Definition Testing Class Template Stack Function Template to Manipulate a Class-Template Specialization Object Nontype Parameters Default Arguments for Template Type Parameters Overloading Function Templates Wrap-Up

19

Custom Templatized Data Structures

19.1 19.1.1 19.1.2 19.2 19.3 19.3.1 19.3.2 19.3.3 19.3.4 19.3.5 19.3.6 19.3.7 19.3.8 19.3.9 19.4 19.4.1 19.4.2 19.4.3 19.4.4 19.4.5 19.5 19.5.1 19.5.2 19.5.3 19.6 19.6.1 19.6.2 19.6.3 19.6.4

Introduction Always Prefer the Standard Library’s Containers, Iterators and Algorithms, if Possible Special Section: Building Your Own Compiler Self-Referential Classes Linked Lists Testing Our Linked List Implementation Class Template ListNode Class Template List Member Function insertAtFront Member Function insertAtBack Member Function removeFromFront Member Function removeFromBack Member Function print Circular Linked Lists and Double Linked Lists Stacks Taking Advantage of the Relationship Between Stack and List Implementing a Class Template Stack Class Based By Inheriting from List Dependent Names in Class Templates Testing the Stack Class Template Implementing a Class Template Stack Class With Composition of a List Object Queues Applications of Queues Implementing a Class Template Queue Class Based By Inheriting from List Testing the Queue Class Template Trees Basic Terminology Binary Search Trees Testing the Tree Class Template Class Template TreeNode

19.6.5 19.6.6 19.6.7 19.6.8 19.6.9 19.7

Class Template Tree Tree Member Function insertNodeHelper Tree Traversal Functions Duplicate Elimination Overview of the Binary Tree Exercises Wrap-Up

20

Searching and Sorting

20.1 20.2 20.2.1 20.2.2 20.3 20.3.1 20.3.2 20.3.3 20.4

Introduction Searching Algorithms Linear Search Binary Search Sorting Algorithms Insertion Sort Selection Sort Merge Sort (A Recursive Implementation) Wrap-Up

21

Class string and String Stream Processing: A Deeper Look

21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 21.10 21.11 21.12 21.13 21.14

Introduction string Assignment and Concatenation Comparing strings Substrings Swapping strings string Characteristics Finding Substrings and Characters in a string Replacing Characters in a string Inserting Characters into a string Conversion to Pointer-Based char* Strings Iterators String Stream Processing C++11 Numeric Conversion Functions Wrap-Up

22

Bits, Characters, C Strings and structs

22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 22.10 22.11 22.12

Introduction Structure Definitions typedef and using Example: Card Shuffling and Dealing Simulation Bitwise Operators Bit Fields Character-Handling Library C String-Manipulation Functions C String-Conversion Functions Search Functions of the C String-Handling Library Memory Functions of the C String-Handling Library Wrap-Up

Chapters on the Web A B

Operator Precedence and Associativity ASCII Character Set

C

Fundamental Types

D D.1 D.2 D.3 D.4 D.5 D.6

Number Systems Introduction Abbreviating Binary Numbers as Octal and Hexadecimal Numbers Converting Octal and Hexadecimal Numbers to Binary Numbers Converting from Binary, Octal or Hexadecimal to Decimal Converting from Decimal to Binary, Octal or Hexadecimal Negative Binary Numbers: Two’s Complement Notation

E Preprocessor E.1 Introduction E.2 #include Preprocessing Directive E.3 #define Preprocessing Directive: Symbolic Constants E.4 #define Preprocessing Directive: Macros E.5 Conditional Compilation E.6 #error and #pragma Preprocessing Directives E.7 Operators # and ## E.8 Predefined Symbolic Constants E.9 Assertions E.10 Wrap-Up Appendices on the Web Index Chapters 23—26 and Appendices F—J are PDF documents posted online at the book’s password-protected Companion Website, which is accessible from http://www.pearsonhighered.com/deitel. 23 24 25 26

Other Topics C++11 and C++14: Additional Features ATM Case Study, Part 1: Object-Oriented Design with the UM ATM Case Study, Part 2: Implementing an Object-Oriented Design

F G H I J

C Legacy Code Topics UML: Additional Diagram Types Using the Visual Studio Debugger Using the GNU C++ Debugger Using the Xcode Debugger