Book description
C++ How to Program presents leading-edge computing technologies in a friendly manner appropriate for introductory college course sequences, based on the curriculum recommendations of two key professional organizations—the ACM and the IEEE.
The best-selling C++ How to Program is accessible to readers with little or no programming experience, yet comprehensive enough for the professional programmer. The Deitels’ signature live-code approach presents the concepts in the context of full working programs followed by sample executions. The early objects approach gets readers thinking about objects immediately—allowing them to more thoroughly master the concepts. Emphasis is placed on achieving program clarity and building well-engineered software. Interesting, entertaining, and challenging exercises encourage students to make a difference and use computers and the Internet to work on problems. To keep readers up-to-date with leading-edge computing technologies, the Tenth Edition conforms to the C++11 standard and the new C++14 standard.
Table of contents
- C++ HOW TO PROGRAM Introducing the New C++14 Standard
- How To Program Series
- Deitel® Developer Series
- Simply Series
- VitalSource Web Books
- LiveLessons Video Learning Products
- C++ How to Program Introducing the New C++14 Standard
- Trademarks
- Contents
-
Preface
- Contacting the Authors
- Join the Deitel & Associates, Inc. Social Media Communities
- The C++11 and C++14 Standards
- Key Features of C++ How to Program, 10/e
- New in This Edition
- Object-Oriented Programming
- Hundreds of Code Examples
- Exercises
- Illustrations and Figures
- Dependency Chart
- Teaching Approach
- Secure C++ Programming
- Online Chapters, Appendices and Other Content
- Obtaining the Software Used in C++ How to Program, 10/e
- Instructor Supplements
- Online Practice and Assessment with MyProgrammingLab™
- Reviewers
- About the Authors
- Before You Begin
-
1 Introduction to Computers and C++
- Objectives
- Outline
- 1.1 Introduction
- 1.2 Computers and the Internet in Industry and Research
- 1.3 Hardware and Software
- 1.4 Data Hierarchy
- 1.5 Machine Languages, Assembly Languages and High-Level Languages
- 1.6 C and C++
- 1.7 Programming Languages
- 1.8 Introduction to Object Technology
- 1.9 Typical C++ Development Environment
-
1.10 Test-Driving a C++ Application
-
1.10.1 Compiling and Running an Application in Visual Studio 2015 for Windows
- Step 1: Checking Your Setup
- Step 2: Launching Visual Studio
- Step 3: Creating a Project
- Step 4: Adding the GuessNumber.cpp File into the Project
- Step 5: Compiling and Running the Project
- Step 6: Entering Your First Guess
- Step 7: Entering Another Guess
- Step 8: Entering Additional Guesses
- Step 9: Playing the Game Again or Exiting the Application
- 1.10.2 Compiling and Running Using GNU C++ on Linux
-
1.10.3 Compiling and Running with Xcode on Mac OS X
- Step 1: Checking Your Setup
- Step 2: Launching Xcode
- Step 3: Creating a Project
- Step 4: Deleting the main.cpp File from the Project
- Step 5: Adding the GuessNumber.cpp File into the Project
- Step 6: Compiling and Running the Project
- Step 7: Entering Your First Guess
- Step 8: Entering Another Guess
- Step 9: Entering Additional Guesses
- Playing the Game Again or Exiting the Application
-
1.10.1 Compiling and Running an Application in Visual Studio 2015 for Windows
- 1.11 Operating Systems
- 1.12 The Internet and the World Wide Web
- 1.13 Some Key Software Development Terminology
- 1.14 C++11 and C++14: The Latest C++ Versions
- 1.15 Boost C++ Libraries
- 1.16 Keeping Up to Date with Information Technologies
- Self-Review Exercises
- Exercises
- Making a Difference
- Making a Difference Resources
-
2 Introduction to C++ Programming, Input/Output and Operators
- Objectives
- Outline
- 2.1 Introduction
- 2.2 First Program in C++: Printing a Line of Text
- 2.3 Modifying Our First C++ Program
- 2.4 Another C++ Program: Adding Integers
- 2.5 Memory Concepts
- 2.6 Arithmetic
- 2.7 Decision Making: Equality and Relational Operators
- 2.8 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
- Making a Difference
-
3 Introduction to Classes, Objects, Member Functions and Strings
- Objectives
- Outline
- 3.1 Introduction 1
- 3.2 Test-Driving an Account Object
- 3.3 Account Class with a Data Member and Set and Get Member Functions
- 3.4 Account Class: Initializing Objects with Constructors
- 3.5 Software Engineering with Set and Get Member Functions
- 3.6 Account Class with a Balance; Data Validation
- 3.7 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
- Making a Difference
-
4 Algorithm Development and Control Statements: Part 1
- Objectives
- Outline
- 4.1 Introduction
- 4.2 Algorithms
- 4.3 Pseudocode
- 4.4 Control Structures
- 4.5 if Single-Selection Statement
- 4.6 if…else Double-Selection Statement
- 4.7 Student Class: Nested if…else Statements
- 4.8 while Iteration Statement
- 4.9 Formulating Algorithms: Counter-Controlled Iteration
-
4.10 Formulating Algorithms: Sentinel-Controlled Iteration
- 4.10.1 Top-Down, Stepwise Refinement: The Top and First Refinement
- 4.10.2 Proceeding to the Second Refinement
- 4.10.3 Implementing Sentinel-Controlled Iteration
- 4.10.4 Converting Between Fundamental Types Explicitly and Implicitly
- 4.10.5 Formatting Floating-Point Numbers
- 4.10.6 Unsigned Integers and User Input
-
4.11 Formulating Algorithms: Nested Control Statements
- 4.11.1 Problem Statement
- 4.11.2 Top-Down, Stepwise Refinement: Pseudocode Representation of the Top
- 4.11.3 Top-Down, Stepwise Refinement: First Refinement
- 4.11.4 Top-Down, Stepwise Refinement: Second Refinement
- 4.11.5 Complete Second Refinement of the Pseudocode
- 4.11.6 Program That Implements the Pseudocode Algorithm
- 4.11.7 Preventing Narrowing Conversions with List Initialization
- 4.12 Compound Assignment Operators
- 4.13 Increment and Decrement Operators
- 4.14 Fundamental Types Are Not Portable
- 4.15 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
- Making a Difference
-
5 Control Statements: Part 2; Logical Operators
- Objectives
- Outline
- 5.1 Introduction
- 5.2 Essentials of Counter-Controlled Iteration
- 5.3 for Iteration Statement
- 5.4 Examples Using the for Statement
- 5.5 Application: Summing Even Integers
- 5.6 Application: Compound-Interest Calculations
- 5.7 Case Study: Integer-Based Monetary Calculations with Class DollarAmount
- 5.8 do…while Iteration Statement
- 5.9 switch Multiple-Selection Statement
- 5.10 break and continue Statements
- 5.11 Logical Operators
- 5.12 Confusing the Equality (==) and Assignment (=) Operators
- 5.13 Structured-Programming Summary
- 5.14 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
- Making a Difference
-
6 Functions and an Introduction to Recursion
- Objectives
- Outline
- 6.1 Introduction
- 6.2 Program Components in C++
- 6.3 Math Library Functions
- 6.4 Function Prototypes
- 6.5 Function-Prototype and Argument-Coercion Notes
- 6.6 C++ Standard Library Headers
- 6.7 Case Study: Random-Number Generation2
- 6.8 Case Study: Game of Chance; Introducing Scoped enums
- 6.9 C++11 Random Numbers
- 6.10 Scope Rules
- 6.11 Function-Call Stack and Activation Records
- 6.12 Inline Functions
- 6.13 References and Reference Parameters
- 6.14 Default Arguments
- 6.15 Unary Scope Resolution Operator
- 6.16 Function Overloading
- 6.17 Function Templates
- 6.18 Recursion
- 6.19 Example Using Recursion: Fibonacci Series
- 6.20 Recursion vs. Iteration
- 6.21 Wrap-Up
-
Summary
- Section 6.11 Function-Call Stack and Activation Records
- Section 6.12 Inline Functions
- Section 6.13 References and Reference Parameters
- Section 6.14 Default Arguments
- Section 6.15 Unary Scope Resolution Operator
- Section 6.16 Function Overloading
- Section 6.17 Function Templates
- Section 6.18 Recursion
- Section 6.19 Example Using Recursion: Fibonacci Series
- Self-Review Exercises
- Exercises
- Making a Difference
-
7 Class Templates array and vector; Catching Exceptions
- Objectives
- Outline
- 7.1 Introduction
- 7.2 arrays
- 7.3 Declaring arrays
-
7.4 Examples Using arrays
- 7.4.1 Declaring an array and Using a Loop to Initialize the array’s Elements
- 7.4.2 Initializing an array in a Declaration with an Initializer List
- 7.4.3 Specifying an array’s Size with a Constant Variable and Setting array Elements with Calculations
- 7.4.4 Summing the Elements of an array
- 7.4.5 Using a Bar Chart to Display array Data Graphically
- 7.4.6 Using the Elements of an array as Counters
- 7.4.7 Using arrays to Summarize Survey Results
- 7.4.8 Static Local arrays and Automatic Local arrays
- 7.5 Range-Based for Statement
- 7.6 Case Study: Class GradeBook Using an array to Store Grades
- 7.7 Sorting and Searching arrays
- 7.8 Multidimensional arrays
- 7.9 Case Study: Class GradeBook Using a Two-Dimensional array
- 7.10 Introduction to C++ Standard Library Class Template vector
- 7.11 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
- Recursion Exercises
- Making a Difference
-
8 Pointers
- Objectives
- Outline
- 8.1 Introduction
- 8.2 Pointer Variable Declarations and Initialization
- 8.3 Pointer Operators
- 8.4 Pass-by-Reference with Pointers
- 8.5 Built-In Arrays
- 8.6 Using const with Pointers
- 8.7 sizeof Operator
- 8.8 Pointer Expressions and Pointer Arithmetic
- 8.9 Relationship Between Pointers and Built-In Arrays
- 8.10 Pointer-Based Strings (Optional)
- 8.11 Note About Smart Pointers
- 8.12 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
- Special Section: Building Your Own Computer
-
9 Classes: A Deeper Look
- Objectives
- Outline
- 9.1 Introduction
-
9.2 Time Class Case Study: Separating Interface from Implementation
- 9.2.1 Interface of a Class
- 9.2.2 Separating the Interface from the Implementation
- 9.2.3 Time Class Definition
- 9.2.4 Time Class Member Functions
- 9.2.5 Scope Resolution Operator (::)
- 9.2.6 Including the Class Header in the Source-Code File
- 9.2.7 Time Class Member Function setTime and Throwing Exceptions
- 9.2.8 Time Class Member Function toUniversalString and String Stream Processing
- 9.2.9 Time Class Member Function toStandardString
- 9.2.10 Implicitly Inlining Member Functions
- 9.2.11 Member Functions vs. Global Functions
- 9.2.12 Using Class Time
- 9.2.13 Object Size
- 9.3 Compilation and Linking Process
- 9.4 Class Scope and Accessing Class Members
- 9.5 Access Functions and Utility Functions
- 9.6 Time Class Case Study: Constructors with Default Arguments
- 9.7 Destructors
- 9.8 When Constructors and Destructors Are Called
- 9.9 Time Class Case Study: A Subtle Trap — Returning a Reference or a Pointer to a private Data Member
- 9.10 Default Memberwise Assignment
- 9.11 const Objects and const Member Functions
- 9.12 Composition: Objects as Members of Classes
- 9.13 friend Functions and friend Classes
- 9.14 Using the this Pointer
- 9.15 static Class Members
- 9.16 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
- Making a Difference
-
10 Operator Overloading; Class string
- Objectives
- Outline
- 10.1 Introduction
- 10.2 Using the Overloaded Operators of Standard Library Class string
- 10.3 Fundamentals of Operator Overloading
- 10.4 Overloading Binary Operators
- 10.5 Overloading the Binary Stream Insertion and Stream Extraction Operators
- 10.6 Overloading Unary Operators
- 10.7 Overloading the Increment and Decrement Operators
- 10.8 Case Study: A Date Class
- 10.9 Dynamic Memory Management
-
10.10 Case Study: Array Class
-
10.10.1 Using the Array Class
- Creating Arrays, Outputting Their Size and Displaying Their Contents
- Using the Overloaded Stream Extraction Operator to Fill an Array
- Using the Overloaded Inequality Operator
- Initializing a New Array with a Copy of an Existing Array’s Contents
- Using the Overloaded Assignment Operator
- Using the Overloaded Equality Operator
- Using the Overloaded Subscript Operator
-
10.10.2 Array Class Definition
- Overloading the Stream Insertion and Stream Extraction Operators as friends
- Range-Based for Does Not Work with Dynamically Allocated Built-In Arrays
- Array Default Constructor
- Array Copy Constructor
- Array Destructor
- getSize Member Function
- Overloaded Assignment Operator
- C++11: Move Constructor and Move Assignment Operator
- C++11: Deleting Unwanted Member Functions from Your Class
- Overloaded Equality and Inequality Operators
- Overloaded Subscript Operators
- C++11: Managing Dynamically Allocated Memory with unique_ptr
- C++11: Passing a List Initializer to a Constructor
-
10.10.1 Using the Array Class
- 10.11 Operators as Member vs. Non-Member Functions
- 10.12 Converting Between Types
- 10.13 explicit Constructors and Conversion Operators
- 10.14 Overloading the Function Call Operator ()
- 10.15 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
-
11 Object-Oriented Programming: Inheritance
- Objectives
- Outline
- 11.1 Introduction
- 11.2 Base Classes and Derived Classes
-
11.3 Relationship between Base and Derived Classes
- 11.3.1 Creating and Using a CommissionEmployee Class
- 11.3.2 Creating a BasePlusCommissionEmployee Class Without Using Inheritance
- 11.3.3 Creating a CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy
- 11.3.4 CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using protected Data
-
11.3.5 CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using private Data
- Changes to Class CommissionEmployee’s Member-Function Definitions
- Changes to Class BasePlusCommissionEmployee’s Member-Function Definitions
- BasePlusCommissionEmployee Member Function earnings
- BasePlusCommissionEmployee Member Function toString
- Testing the Modified Class Hierarchy
- Summary of the CommissionEmployee–BasePlusCommissionEmployee Examples
- 11.4 Constructors and Destructors in Derived Classes
- 11.5 public, protected and private Inheritance
- 11.6 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
-
12 Object-Oriented Programming: Polymorphism
- Objectives
- Outline
- 12.1 Introduction
- 12.2 Introduction to Polymorphism: Polymorphic Video Game
- 12.3 Relationships Among Objects in an Inheritance Hierarchy
-
12.4 Virtual Functions and Virtual Destructors
- 12.4.1 Why virtual Functions Are Useful
- 12.4.2 Declaring virtual Functions
- 12.4.3 Invoking a virtual Function Through a Base-Class Pointer or Reference
- 12.4.4 Invoking a virtual Function Through an Object’s Name
- 12.4.5 virtual Functions in the CommissionEmployee Hierarchy
- 12.4.6 virtual Destructors
- 12.4.7 C++11: final Member Functions and Classes
- 12.5 Type Fields and switch Statements
- 12.6 Abstract Classes and Pure virtual Functions
- 12.7 Case Study: Payroll System Using Polymorphism
- 12.8 (Optional) Polymorphism, Virtual Functions and Dynamic Binding “Under the Hood”
- 12.9 Case Study: Payroll System Using Polymorphism and Runtime Type Information with Downcasting, dynamic_cast, typeid and type_info
- 12.10 Wrap-Up
-
Summary
- Section 12.1 Introduction
- Section 12.2 Introduction to Polymorphism: Polymorphic Video Game
- Section 12.3 Relationships Among Objects in an Inheritance Hierarchy
- Section 12.4.2 Declaring virtual Functions
- Section 12.4.3 Invoking a virtual Function Through a Base-Class Pointer or Reference
- Section 12.4.4 Invoking a virtual Function Through an Object’s Name
- Section 12.4.5 virtual Functions in the CommissionEmployee Hierarchy
- Section 12.4.6 virtual Destructors
- Section 12.4.7 C++11: final Member Functions and Classes
- Section 12.5 Type Fields and switch Statements
- Section 12.6 Abstract Classes and Pure virtual Functions
- Section 12.6.1 Pure Virtual Functions
- Section 12.8 (Optional) Polymorphism, Virtual Functions and Dynamic Binding “Under the Hood”
- Section 12.9 Case Study: Payroll System Using Polymorphism and Runtime Type Information with Downcasting, dynamic_cast, typeid and type_info
- Self-Review Exercises
- Exercises
- Making a Difference
-
13 Stream Input/Output: A Deeper Look
- Objectives
- Outline
- 13.1 Introduction
- 13.2 Streams
- 13.3 Stream Output
- 13.4 Stream Input
- 13.5 Unformatted I/O Using read, write and gcount
- 13.6 Stream Manipulators: A Deeper Look
-
13.7 Stream Format States and Stream Manipulators
- 13.7.1 Trailing Zeros and Decimal Points (showpoint)
- 13.7.2 Justification (left, right and internal)
- 13.7.3 Padding (fill, setfill)
- 13.7.4 Integral Stream Base (dec, oct, hex, showbase)
- 13.7.5 Floating-Point Numbers; Scientific and Fixed Notation (scientific, fixed)
- 13.7.6 Uppercase/Lowercase Control (uppercase)
- 13.7.7 Specifying Boolean Format (boolalpha)
- 13.7.8 Setting and Resetting the Format State via Member Function flags
- 13.8 Stream Error States
- 13.9 Tying an Output Stream to an Input Stream
- 13.10 Wrap-Up
-
Summary
- Section 13.1 Introduction
- Section 13.2 Streams
- Section 13.2.2 iostream Library Headers
- Section 13.2.3 Stream Input/Output Classes and Objects
- Section 13.3 Stream Output
- Section 13.4 Stream Input
- Section 13.5 Unformatted I/O Using read, write and gcount
- Section 13.6 Stream Manipulators: A Deeper Look
- Section 13.7 Stream Format States and Stream Manipulators
- Section 13.8 Stream Error States
- Section 13.9 Tying an Output Stream to an Input Stream
- Self-Review Exercises
- Exercises
-
14 File Processing
- Objectives
- Outline
- 14.1 Introduction
- 14.2 Files and Streams
- 14.3 Creating a Sequential File
- 14.4 Reading Data from a Sequential File
- 14.5 C++14: Reading and Writing Quoted Text
- 14.6 Updating Sequential Files
- 14.7 Random-Access Files
- 14.8 Creating a Random-Access File
- 14.9 Writing Data Randomly to a Random-Access File
- 14.10 Reading from a Random-Access File Sequentially
- 14.11 Case Study: A Transaction-Processing Program
- 14.12 Object Serialization
- 14.13 Wrap-Up
- Summary
- Exercises
- Making a Difference
-
15 Standard Library Containers and Iterators
- Objectives
- Outline
- 15.1 Introduction
- 15.2 Introduction to Containers2
- 15.3 Introduction to Iterators
- 15.4 Introduction to Algorithms
-
15.5 Sequence Containers
-
15.5.1 vector Sequence Container
- Using vectors and Iterators
- Creating a vector
- vector Member Functions size and capacity
- vector Member Function push_back
- Updated size and capacity After Modifying a vector
- vector Growth
- Outputting Built-in Array Contents with Pointers
- Outputting vector Contents with Iterators
- Displaying the vector’s Contents in Reverse with const_reverse_iterators
- C++11: shrink_to_fit
- vector Element-Manipulation Functions
- ostream_iterator
- copy Algorithm
- vector Member Functions front and back
- Accessing vector Elements
- vector Member Function insert
- vector Member Function erase
- vector Member Function insert with Three Arguments (Range insert)
- vector Member Function clear
- 15.5.2 list Sequence Container
- 15.5.3 deque Sequence Container
-
15.5.1 vector Sequence Container
-
15.6 Associative Containers
-
15.6.1 multiset Associative Container
- Creating a multiset
- multiset Member Function count
- multiset Member Function insert
- multiset Member Function find
- Inserting Elements of Another Container into a multiset
- multiset Member Functions lower_bound and upper_bound
- pair Objects and multiset Member Function equal_range
- C++11: Variadic Class Template tuple
- C++14: Heterogeneous Lookup
- 15.6.2 set Associative Container
- 15.6.3 multimap Associative Container
- 15.6.4 map Associative Container
-
15.6.1 multiset Associative Container
- 15.7 Container Adapters
- 15.8 Class bitset
- 15.9 Wrap-Up
-
Summary
- Section 15.1 Introduction
- Section 15.2 Introduction to Containers
- Section 15.3 Introduction to Iterators
- Section 15.4 Introduction to Algorithms
- Section 15.5 Sequence Containers
- Section 15.5.1 vector Sequence Container
- Section 15.5.2 list Sequence Container
- Section 15.5.3 deque Sequence Container
- Section 15.6 Associative Containers
- Section 15.6.1 multiset Associative Container
- Section 15.6.2 set Associative Container
- Section 15.6.3 multimap Associative Container
- Section 15.6.4 map Associative Container
- Section 15.7 Container Adapters
- Section 15.7.1 stack Adapter
- Section 15.7.2 queue Adapter
- Section 15.7.3 priority_queue Adapter
- Section 15.8 Class bitset
- Self-Review Exercises
- Exercises
- Recommended Reading
-
16 Standard Library Algorithms
- Objectives
- Outline
- 16.1 Introduction
- 16.2 Minimum Iterator Requirements
- 16.3 Lambda Expressions
-
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
-
Summary
- Section 16.1 Introduction
- Section 16.3 Lambda Expressions
- Section 16.3.1 Algorithm for_each
- Section 16.3.2 Lambda with an Empty Introducer
- Section 16.3.3 Lambda with a Nonempty Introducer—Capturing Local Variables
- Section 16.3.4 Lambda Return Types
- Section 16.4.1 fill, fill_n, generate and generate_n
- Section 16.4.2 equal, mismatch and lexicographical_compare
- Section 16.4.3 remove, remove_if, remove_copy and remove_copy_if
- Section 16.4.4 replace, replace_if, replace_copy and replace_copy_if
- Section 16.4.5 Mathematical Algorithms
- Section 16.4.6 Basic Searching and Sorting Algorithms
- Section 16.4.7 swap, iter_swap and swap_ranges
- Section 16.4.8 copy_backward, merge, unique and reverse
- Section 16.4.9 inplace_merge, unique_copy and reverse_copy
- Section 16.4.10 Set Operations
- Section 16.4.11 lower_bound, upper_bound and equal_range
- Section 16.4.12 min, max, minmax and minmax_element
- Section 16.5 Function Objects
- Self-Review Exercises
- Exercises
-
17 Exception Handling: A Deeper Look
- Objectives
- Outline
- 17.1 Introduction
- 17.2 Exception-Handling Flow of Control; Defining an Exception Class
- 17.2.4 Defining a catch Handler to Process a DivideByZeroException
- 17.3 Rethrowing an Exception
- 17.4 Stack Unwinding
- 17.5 When to Use Exception Handling
- 17.6 noexcept: Declaring Functions That Do Not Throw Exceptions
- 17.7 Constructors, Destructors and Exception Handling
- 17.8 Processing new Failures
- 17.9 Class unique_ptr and Dynamic Memory Allocation
- 17.10 Standard Library Exception Hierarchy
- 17.11 Wrap-Up
-
Summary
- Section 17.1 Introduction
- Section 17.2.1 Defining an Exception Class to Represent the Type of Problem That Might Occur
- Section 17.2.5 Termination Model of Exception Handling
- Section 17.2.7 Flow of Program Control When the User Enters a Denominator of Zero
- Section 17.3 Rethrowing an Exception
- Section 17.4 Stack Unwinding
- Section 17.5 When to Use Exception Handling
- Section 17.6 noexcept: Declaring Functions That Do Not Throw Exceptions
- Section 17.7.1 Destructors Called Due to Exceptions
- Section 17.7.2 Initializing Local Objects to Acquire Resources
- Section 17.8 Processing new Failures
- Section 17.9 Class unique_ptr and Dynamic Memory Allocation
- Section 17.10 Standard Library Exception Hierarchy
- Self-Review Exercises
- Exercises
-
18 Introduction to Custom Templates
- Objectives
- Outline
- 18.1 Introduction
-
18.2 Class Templates
- 18.2.1 Creating Class Template Stack<T>Creating Class Template Stack<T>
- 18.2.2 Class Template Stack<T>’s Data Representation
- 18.2.3 Class Template Stack<T>’s Member Functions
- 18.2.4 Declaring a Class Template’s Member Functions Outside the Class Template Definition
- 18.2.5 Testing Class Template Stack<T>
- 18.3 Function Template to Manipulate a Class-Template Specialization Object
- 18.4 Nontype Parameters
- 18.5 Default Arguments for Template Type Parameters
- 18.6 Overloading Function Templates
- 18.7 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
-
19 Custom Templatized Data Structures
- Objectives
- Outline
- 19.1 Introduction
- 19.2 Self-Referential Classes
-
19.3 Linked Lists
- 19.3.1 Testing Our Linked List Implementation
- 19.3.2 Class Template ListNode
- 19.3.3 Class Template List
- 19.3.4 Member Function insertAtFront
- 19.3.5 Member Function insertAtBack
- 19.3.6 Member Function removeFromFront
- 19.3.7 Member Function removeFromBack
- 19.3.8 Member Function print
- 19.3.9 Circular Linked Lists and Double Linked Lists
-
19.4 Stacks
- 19.4.1 Taking Advantage of the Relationship Between Stack and List
- 19.4.2 Implementing a Class Template Stack Class Based By Inheriting from List
- 19.4.3 Dependent Names in Class Templates
- 19.4.4 Testing the Stack Class Template
- 19.4.5 Implementing a Class Template Stack Class With Composition of a List Object
- 19.5 Queues
- 19.6 Trees
- 19.7 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
- Special Section: Building Your Own Compiler
- 20 Searching and Sorting
-
21 Class string and String Stream Processing: A Deeper
- Objectives
- Outline
- 21.1 Introduction1
- 21.2 string Assignment and Concatenation
- 21.3 Comparing strings
- 21.4 Substrings
- 21.5 Swapping strings
- 21.6 string Characteristics
- 21.7 Finding Substrings and Characters in a string
- 21.8 Replacing Characters in a string
- 21.9 Inserting Characters into a string
- 21.10 Conversion to Pointer-Based char* Strings
- 21.11 Iterators
- 21.12 String Stream Processing
- 21.13 C++11 Numeric Conversion Functions
- 21.14 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
- Making a Difference
-
22 Bits, Characters, C Strings and structs
- Objectives
- Outline
- 22.1 Introduction
- 22.2 Structure Definitions
- 22.3 typedef and using
- 22.4 Example: Card Shuffling and Dealing Simulation
- 22.5 Bitwise Operators
- 22.6 Bit Fields
- 22.7 Character-Handling Library
- 22.8 C String-Manipulation Functions
- 22.9 C String-Conversion Functions
- 22.10 Search Functions of the C String-Handling Library
- 22.11 Memory Functions of the C String-Handling Library
- 22.12 Wrap-Up
- Summary
- Self-Review Exercises
- Exercises
- Special Section: Advanced String-Manipulation Exercises
- Challenging String-Manipulation Projects
- Chapters on the Web
- A Operator Precedence and Associativity
- B ASCII Character Set
- C Fundamental Types
-
D Number Systems
- Objectives
- Outline
- D.1 Introduction
- D.2 Abbreviating Binary Numbers as Octal and Hexadecimal Numbers
- D.3 Converting Octal and Hexadecimal Numbers to Binary Numbers
- D.4 Converting from Binary, Octal or Hexadecimal to Decimal
- D.5 Converting from Decimal to Binary, Octal or Hexadecimal
- D.6 Negative Binary Numbers: Two’s Complement Notation
- Summary
- Self-Review Exercises
- Answers to Self-Review Exercises
- Exercises
-
E Preprocessor
- Objectives
- Outline
- 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
- Summary
- Self-Review Exercises
- Answers to Self-Review Exercises
- Exercises
- Appendices on the Web
- Index
Product information
- Title: C++ How to Program, 10/e
- Author(s):
- Release date: February 2016
- Publisher(s): Pearson
- ISBN: 9780134448930
You might also like
book
C++ How to Program, Sixth Edition
For Introduction to Programming (CS1) and other more intermediate courses covering programming in C++. Also appropriate …
book
C++ How to Program, Ninth Edition
For Introduction to Programming (CS1) and other more intermediate courses covering programming in C++. Also appropriate …
book
A Tour of C++, 3rd Edition
In A Tour of C++, Third Edition, Bjarne Stroustrup provides an overview of ISO C++, C++20, …
book
C++ Primer, Fifth Edition
Bestselling Programming Tutorial and Reference Completely Rewritten for the New C++11 Standard Fully updated and recast …