Absolute C++

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

&>NOTE: You are purchasing a standalone product; MyProgrammingLab does not come packaged with this content. If you would like to purchase both the physical text and MyProgrammingLab search for ISBN-10: 0132989921/ISBN-13: 9780132989923. That package includes ISBN-10: 013283071X/ISBN-13: 9780132830713 and ISBN-10: 0132846578/ISBN-13: 9780132846578. MyProgrammingLab should only be purchased when required by an instructor. Praised for providing an engaging balance of thoughtful examples and explanatory discussion, best-selling author Walter Savitch explains concepts and techniques in a straightforward style using understandable language and code enhanced by a suite of pedagogical tools. Absolute C++ is appropriate for both introductory and intermediate C++ programmers. This edition is available with MyProgrammingLab, an innovative online homework and assessment tool. Through the power of practice and immediate personalized feedback, MyProgrammingLab helps students fully grasp the logic, semantics, and syntax of programming.

Author(s): Walter J. Savitch; Kenrick Mock
Edition: 5
Publisher: Addison-Wesley Longman
Year: 2012

Language: English
Pages: 951

Cover
Title Page
Copyright Page
Preface
Acknowledgments
Brief Contents
Contents
Chapter 1 C++ Basics
1.1 INTRODUCTION TO C++
Origins of the C++ Language
C++ and Object-Oriented Programming
The Character of C++
C++ Terminology
A Sample C++ Program
1.2 VARIABLES, EXPRESSIONS, AND ASSIGNMENT STATEMENTS
Identifiers
Variables
Assignment Statements
Introduction to the string class
PITFALL: Uninitialized Variables
TIP: Use Meaningful Names
More Assignment Statements
Assignment Compatibility
Literals
Escape Sequences
Naming Constants
Arithmetic Operators and Expressions
Integer and Floating-Point Division
PITFALL: Division with Whole Numbers
Type Casting
Increment and Decrement Operators
PITFALL: Order of Evaluation
1.3 CONSOLE INPUT/OUTPUT
Output Using cout
New Lines in Output
TIP: End Each Program with \n or endl
Formatting for Numbers with a Decimal Point
Output with cerr
Input Using cin
TIP: Line Breaks in I/O
1.4 PROGRAM STYLE
Comments
1.5 LIBRARIES AND NAMESPACES
Libraries and include Directives
Namespaces
PITFALL: Problems with Library Names
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 2 Flow of Control
2.1 BOOLEAN EXPRESSIONS
Building Boolean Expressions
PITFALL: Strings of Inequalities
Evaluating Boolean Expressions
Precedence Rules
PITFALL: Integer Values Can Be Used as Boolean Values
2.2 BRANCHING MECHANISMS
if-else Statements
Compound Statements
PITFALL: Using = in Place of ==
Omitting the else
Nested Statements
Multiway if-else Statement
The switch Statement
PITFALL: Forgetting a break in a switch Statement
TIP: Use switch Statements for Menus
Enumeration Types
The Conditional Operator
2.3 LOOPS
The while and do-while Statements
Increment and Decrement Operators Revisited
The Comma Operator
The for Statement
TIP: Repeat-N-Times Loops
PITFALL: Extra Semicolon in a for Statement
PITFALL: Infinite Loops
The break and continue Statements
Nested Loops
2.4 INTRODUCTION TO FILE INPUT
Reading From a Text File Using ifstream
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 3 Function Basics
3.1 PREDEFINED FUNCTIONS
Predefined Functions That Return a Value
Predefined void Functions
A Random Number Generator
3.2 PROGRAMMER-DEFINED FUNCTIONS
Defining Functions That Return a Value
Alternate Form for Function Declarations
PITFALL: Arguments in the Wrong Order
PITFALL: Use of the Terms Parameter and Argument
Functions Calling Functions
EXAMPLE: A Rounding Function
Functions That Return a Boolean Value
Defining void Functions
return Statements in void Functions
Preconditions and Postconditions
main Is a Function
Recursive Functions
3.3 SCOPE RULES
Local Variables
Procedural Abstraction
Global Constants and Global Variables
Blocks
Nested Scopes
TIP: Use Function Calls in Branching and Loop Statements
Variables Declared in a for Loop
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 4 Parameters and Overloading
4.1 PARAMETERS
Call-by-Value Parameters
A First Look at Call-by-Reference Parameters
Call-by-Reference Mechanism in Detail
Constant Reference Parameters
EXAMPLE: The swapValues Function
TIP: Think of Actions, Not Code
Mixed Parameter Lists
TIP: What Kind of Parameter to Use
PITFALL: Inadvertent Local Variables
TIP: Choosing Formal Parameter Names
EXAMPLE: Buying Pizza
4.2 OVERLOADING AND DEFAULT ARGUMENTS
Introduction to Overloading
PITFALL: Automatic Type Conversion and Overloading
Rules for Resolving Overloading
EXAMPLE: Revised Pizza-Buying Program
Default Arguments
4.3 TESTING AND DEBUGGING FUNCTIONS
The assert Macro
Stubs and Drivers
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 5 Arrays
5.1 INTRODUCTION TO ARRAYS
Declaring and Referencing Arrays
TIP: Use for Loops with Arrays
PITFALL: Array Indexes Always Start with Zero
TIP: Use a Defined Constant for the Size of an Array
Arrays in Memory
PITFALL: Array Index out of Range
Initializing Arrays
5.2 ARRAYS IN FUNCTIONS
Indexed Variables as Function Arguments
Entire Arrays as Function Arguments
The const Parameter Modifier
PITFALL: Inconsistent Use of const Parameters
Functions That Return an Array
EXAMPLE: Production Graph
5.3 PROGRAMMING WITH ARRAYS
Partially Filled Arrays
TIP: Do Not Skimp on Formal Parameters
EXAMPLE: Searching an Array
EXAMPLE: Sorting an Array
5.4 MULTIDIMENSIONAL ARRAYS
Multidimensional Array Basics
Multidimensional Array Parameters
EXAMPLE: Two-Dimensional Grading Program
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 6 Structures and Classes
6.1 STRUCTURES
Structure Types
PITFALL: Forgetting a Semicolon in a Structure Definition
Structures as Function Arguments
TIP: Use Hierarchical Structures
Initializing Structures
6.2 CLASSES
Defining Classes and Member Functions
Encapsulation
Public and Private Members
Accessor and Mutator Functions
TIP: Separate Interface and Implementation
TIP: A Test for Encapsulation
Structures versus Classes
TIP: Thinking Objects
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 7 Constructors and Other Tools
7.1 CONSTRUCTORS
Constructor Definitions
PITFALL: Constructors with No Arguments
Explicit Constructor Calls
TIP: Always Include a Default Constructor
EXAMPLE: BankAccount Class
Class Type Member Variables
7.2 MORE TOOLS
The const Parameter Modifier
PITFALL: Inconsistent Use of const
Inline Functions
Static Members
Nested and Local Class Definitions
7.3 VECTORS—A PREVIEW OF THE STANDARD TEMPLATE LIBRARY
Vector Basics
PITFALL: Using Square Brackets beyond the Vector Size
TIP: Vector Assignment Is Well Behaved
Efficiency Issues
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 8 Operator Overloading, Friends, and References
8.1 BASIC OPERATOR OVERLOADING
Overloading Basics
TIP: A Constructor Can Return an Object
Returning by const Value
Overloading Unary Operators
Overloading as Member Functions
TIP: A Class Has Access to All Its Objects
Overloading Function Application ( )
PITFALL: Overloading &&, ||, and the Comma Operator
8.2 FRIEND FUNCTIONS AND AUTOMATIC TYPE CONVERSION
Constructors for Automatic Type Conversion
PITFALL: Member Operators and Automatic Type Conversion
Friend Functions
Friend Classes
PITFALL: Compilers without Friends
8.3 REFERENCES AND MORE OVERLOADED OPERATORS
References
TIP: Returning Member Variables of a Class Type
Overloading >> and <<
TIP: What Mode of Returned Value to Use
The Assignment Operator
Overloading the Increment and Decrement Operators
Overloading the Array Operator [ ]
Overloading Based on L-Value versus R-Value
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 9 Strings
9.1 AN ARRAY TYPE FOR STRINGS
C-String Values and C-String Variables
PITFALL: Using = and == with C-strings
Other Functions in
EXAMPLE: Command-Line Arguments
C-String Input and Output
9.2 CHARACTER MANIPULATION TOOLS
Character I/O
The Member Functions get and put
EXAMPLE: Checking Input Using a Newline Function
PITFALL: Unexpected '\n' in Input
The putback, peek, and ignore Member Functions
Character-Manipulating Functions
PITFALL: toupper and tolower Return int Values
9.3 THE STANDARD CLASS string
Introduction to the Standard Class string
I/O with the Class string
TIP: More Versions of getline
PITFALL: Mixing cin >> variable; and getline
String Processing with the Class string
EXAMPLE: Palindrome Testing
Converting between string Objects and C-Strings
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 10 Pointers and Dynamic Arrays
10.1 POINTERS
Pointer Variables
Basic Memory Management
PITFALL: Dangling Pointers
Dynamic Variables and Automatic Variables
TIP: Define Pointer Types
PITFALL: Pointers as Call-by-Value Parameters
Uses for Pointers
10.2 DYNAMIC ARRAYS
Array Variables and Pointer Variables
Creating and Using Dynamic Arrays
EXAMPLE: A Function That Returns an Array
Pointer Arithmetic
Multidimensional Dynamic Arrays
10.3 CLASSES, POINTERS, AND DYNAMIC ARRAYS
The -> Operator
The this Pointer
Overloading the Assignment Operator
EXAMPLE: A Class for Partially Filled Arrays
Destructors
Copy Constructors
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 11 Separate Compilation and Namespaces
11.1 SEPARATE COMPILATION
Encapsulation Reviewed
Header Files and Implementation Files
EXAMPLE: DigitalTime Class
TIP: Reusable Components
Using #ifndef
TIP: Defining Other Libraries
11.2 NAMESPACES
Namespaces and using Directives
Creating a Namespace
using Declarations
Qualifying Names
TIP: Choosing a Name for a Namespace
EXAMPLE: A Class Definition in a Namespace
Unnamed Namespaces
PITFALL: Confusing the Global Namespace and the Unnamed Namespace
TIP: Unnamed Namespaces Replace the static Qualifier
TIP: Hiding Helping Functions
Nested Namespaces
TIP: What Namespace Specification Should You Use?
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 12 Streams and File I/O
12.1 I/O STREAMS
File I/O
PITFALL: Restrictions on Stream Variables
Appending to a File
TIP: Another Syntax for Opening a File
TIP: Check That a File Was Opened Successfully
Character I/O
Checking for the End of a File
12.2 TOOLS FOR STREAM I/O
File Names as Input
Formatting Output with Stream Functions
Manipulators
Saving Flag Settings
More Output Stream Member Functions
EXAMPLE: Cleaning Up a File Format
EXAMPLE: Editing a Text File
12.3 STREAM HIERARCHIES: A PREVIEW OF INHERITANCE
Inheritance among Stream Classes
EXAMPLE: Another newLine Function
Parsing Strings with the stringstream Class
12.4 RANDOM ACCESS TO FILES
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 13 Recursion
13.1 RECURSIVE void FUNCTIONS
EXAMPLE: Vertical Numbers
Tracing a Recursive Call
A Closer Look at Recursion
PITFALL: Infinite Recursion
Stacks for Recursion
PITFALL: Stack Overflow
Recursion versus Iteration
13.2 RECURSIVE FUNCTIONS THAT RETURN A VALUE
General Form for a Recursive Function That Returns a Value
EXAMPLE: Another Powers Function
Mutual Recursion
13.3 THINKING RECURSIVELY
Recursive Design Techniques
Binary Search
Coding
Checking the Recursion
Efficiency
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 14 Inheritance
14.1 INHERITANCE BASICS
Derived Classes
Constructors in Derived Classes
PITFALL: Use of Private Member Variables from the Base Class
PITFALL: Private Member Functions Are Effectively Not Inherited
The protected Qualifier
Redefinition of Member Functions
Redefining versus Overloading
Access to a Redefined Base Function
Functions That Are Not Inherited
14.2 PROGRAMMING WITH INHERITANCE
Assignment Operators and Copy Constructors in Derived Classes
Destructors in Derived Classes
EXAMPLE: Partially Filled Array with Backup
PITFALL: Same Object on Both Sides of the Assignment Operator
EXAMPLE: Alternate Implementation of PFArrayDBak
TIP: A Class Has Access to Private Members of All Objects of the Class
TIP: “Is a” versus “Has a”
Protected and Private Inheritance
Multiple Inheritance
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 15 Polymorphism and Virtual Functions
15.1 VIRTUAL FUNCTION BASICS
Late Binding
Virtual Function in C++
TIP: The Virtual Property Is Inherited
TIP: When to Use a Virtual Function
PITFALL: Omitting the Definition of a Virtual Member Function
Abstract Classes and Pure Virtual Functions
EXAMPLE: An Abstract Class
15.2 POINTERS AND VIRTUAL FUNCTIONS
Virtual Functions and Extended Type Compatibility
PITFALL: The Slicing Problem
TIP: Make Destructors Virtual
Downcasting and Upcasting
How C++ Implements Virtual Functions
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 16 Templates
16.1 FUNCTION TEMPLATES
Syntax for Function Templates
PITFALL: Compiler Complications
TIP: How to Define Templates
EXAMPLE: A Generic Sorting Function
PITFALL: Using a Template with an Inappropriate Type
16.2 CLASS TEMPLATES
Syntax for Class Templates
EXAMPLE: An Array Template Class
The vector and basic_string Templates
16.3 TEMPLATES AND INHERITANCE
EXAMPLE: Template Class For a Partially Filled Array with Backup
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 17 Linked Data Structures
17.1 NODES AND LINKED LISTS
Nodes
Linked Lists
Inserting a Node at the Head of a List
PITFALL: Losing Nodes
Inserting and Removing Nodes Inside a List
PITFALL: Using the Assignment Operator with Dynamic Data Structures
Searching a Linked List
Doubly Linked Lists
Adding a Node to a Doubly Linked List
Deleting a Node from a Doubly Linked List
EXAMPLE: A Generic Sorting Template Version of Linked List Tools
17.2 LINKED LIST APPLICATIONS
EXAMPLE: A Stack Template Class
EXAMPLE: A Queue Template Class
TIP: A Comment on Namespaces
Friend Classes and Similar Alternatives
EXAMPLE: Hash Tables With Chaining
Efficiency of Hash Tables
EXAMPLE: A Set Template Class
Efficiency of Sets Using Linked Lists
17.3 ITERATORS
Pointers as Iterators
Iterator Classes
EXAMPLE: An Iterator Class
17.4 TREES
Tree Properties
EXAMPLE: A Tree Template Class
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 18 Exception Handling
18.1 EXCEPTION HANDLING BASICS
A Toy Example of Exception Handling
Defining Your Own Exception Classes
Multiple Throws and Catches
PITFALL: Catch the More Specific Exception First
TIP: Exception Classes Can Be Trivial
Throwing an Exception in a Function
Exception Specification
PITFALL: Exception Specification in Derived
18.2 PROGRAMMING TECHNIQUES FOR EXCEPTION HANDLING
When to Throw an Exception
PITFALL: Uncaught Exceptions
PITFALL: Nested try-catch Blocks
PITFALL: Overuse of Exceptions
Exception Class Hierarchies
Testing for Available Memory
Rethrowing an Exception
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 19 Standard Template Library
19.1 ITERATORS
Iterator Basics
PITFALL: Compiler Problems
Kinds of Iterators
Constant and Mutable Iterators
Reverse Iterators
Other Kinds of Iterators
19.2 CONTAINERS
Sequential Containers
PITFALL: Iterators and Removing Elements
TIP: Type Definitions in Containers
The Container Adapters stack and queue
PITFALL: Underlying Containers
The Associative Containers set and map
Efficiency
19.3 GENERIC ALGORITHMS
Running Times and Big-O Notation
Container Access Running Times
Nonmodifying Sequence Algorithms
Modifying Sequence Algorithms
Set Algorithms
Sorting Algorithms
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Chapter 20 Patterns and UML
Appendix 1 C++ Keywords
Appendix 2 Precedence of Operators
Appendix 3 The ASCII Character Set
Appendix 4 Some Library Functions
Appendix 5 Old and New Header Files
Index
A
B
C
D
E
F
G
H
I
K
L
M
N
O
P
Q
R
S
T
U
V
W
Z