Steve Oualline
Practical C++ Programming
Steve Oualline
Practical C++ Programming
- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
C++ is a powerful, highly flexible, and adaptable programming language that allows software engineers to organize and process information quickly and effectively. But this high-level language is relatively difficult to master, even if you already know the C programming language.
The 2nd edition of Practical C++ Programming is a complete introduction to the C++ language for programmers who are learning C++. Reflecting the latest changes to the C++ standard, this 2nd edition takes a useful down-to-earth approach, placing a strong emphasis on how to design clean, elegant code.
In short,…mehr
Andere Kunden interessierten sich auch für
- John R. BerryhillC++ Scientific Programming125,99 €
- Ray LischnerC++ in a Nutshell35,99 €
- D Ryan StephensC++ Cookbook43,99 €
- Gregory SatirC++ the Core Language42,99 €
- Steve OuallinePractical C Programming39,99 €
- Bill HamiltonNUnit Pocket Reference10,99 €
- Vladimir KushnirSafe C++27,99 €
-
-
-
C++ is a powerful, highly flexible, and adaptable programming language that allows software engineers to organize and process information quickly and effectively. But this high-level language is relatively difficult to master, even if you already know the C programming language.
The 2nd edition of Practical C++ Programming is a complete introduction to the C++ language for programmers who are learning C++. Reflecting the latest changes to the C++ standard, this 2nd edition takes a useful down-to-earth approach, placing a strong emphasis on how to design clean, elegant code.
In short, to-the-point chapters, all aspects of programming are covered including style, software engineering, programming design, object-oriented design, and debugging. It also covers common mistakes and how to find (and avoid) them. End of chapter exercises help you ensure you've mastered the material.
Practical C++ Programming thoroughly covers:
- C++ Syntax
- Coding standards and style
- Creation and use of object classes
- Templates
- Debugging and optimization
- Use of the C++ preprocessor
- File input/output
Steve Oualline's clear, easy-going writing style and hands-on approach to learning make Practical C++ Programming a nearly painless way to master this complex but powerful programming language.
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
The 2nd edition of Practical C++ Programming is a complete introduction to the C++ language for programmers who are learning C++. Reflecting the latest changes to the C++ standard, this 2nd edition takes a useful down-to-earth approach, placing a strong emphasis on how to design clean, elegant code.
In short, to-the-point chapters, all aspects of programming are covered including style, software engineering, programming design, object-oriented design, and debugging. It also covers common mistakes and how to find (and avoid) them. End of chapter exercises help you ensure you've mastered the material.
Practical C++ Programming thoroughly covers:
- C++ Syntax
- Coding standards and style
- Creation and use of object classes
- Templates
- Debugging and optimization
- Use of the C++ preprocessor
- File input/output
Steve Oualline's clear, easy-going writing style and hands-on approach to learning make Practical C++ Programming a nearly painless way to master this complex but powerful programming language.
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Produktdetails
- Produktdetails
- Verlag: O'Reilly Media
- 2nd ed.
- Seitenzahl: 574
- Erscheinungstermin: 21. Januar 2003
- Englisch
- Abmessung: 238mm x 181mm x 35mm
- Gewicht: 812g
- ISBN-13: 9780596004194
- ISBN-10: 0596004192
- Artikelnr.: 10099884
- Verlag: O'Reilly Media
- 2nd ed.
- Seitenzahl: 574
- Erscheinungstermin: 21. Januar 2003
- Englisch
- Abmessung: 238mm x 181mm x 35mm
- Gewicht: 812g
- ISBN-13: 9780596004194
- ISBN-10: 0596004192
- Artikelnr.: 10099884
Steve Oualline lives in Southern California, where he works as a software engineer for a major phone company. In his free time he is a real engineer on the Poway Midland Railroad. Steve has written almost a dozen books on programming and Linux software. His web site is http: //www.oualline.com .
Preface
Scope of This Handbook
How This Book Is Organized
How to Read This Book If You Already Know C
Font Conventions
How to Contact Us
Acknowledgments for the First Edition
Acknowledgments for the Second Edition
Part I: The Basics
Chapter 1: What Is C++?
1.1 A Brief History of C++
1.2 C++ Organization
1.3 How to Learn C++
Chapter 2: The Basics of Program Writing
2.1 Programs from Conception to Execution
2.2 Creating a Real Program
2.3 Getting Help in Unix
2.4 Getting Help in an IDE
2.5 Programming Exercises
Chapter 3: Style
3.1 Comments
3.2 C++ Code
3.3 Naming Style
3.4 Coding Religion
3.5 Indentation and Code Format
3.6 Clarity
3.7 Simplicity
3.8 Consistency and Organization
3.9 Further Reading
3.10 Summary
Chapter 4: Basic Declarations and Expressions
4.1 Basic Program Structure
4.2 Simple Expressions
4.3 The std::cout Output Object
4.4 Variables and Storage
4.5 Variable Declarations
4.6 Integers
4.7 Assignment Statements
4.8 Floating-Point Numbers
4.9 Floating-Point Divide Versus Integer Divide
4.10 Characters
4.11 Wide Characters
4.12 Boolean Type
4.13 Programming Exercises
4.14 Answers to Chapter Questions
Chapter 5: Arrays, Qualifiers, and Reading Numbers
5.1 Arrays
5.2 Strings
5.3 Reading Data
5.4 Initializing Variables
5.5 Multidimensional Arrays
5.6 C-Style Strings
5.7 Types of Integers
5.8 Types of Floats
5.9 Constant and Reference Declarations
5.10 Qualifiers
5.11 Hexadecimal and Octal Constants
5.12 Operators for Performing Shortcuts
5.13 Side Effects
5.14 Programming Exercises
5.15 Answers to Chapter Questions
Chapter 6: Decision and Control Statements
6.1 if Statement
6.2 else Statement
6.3 How Not to Use std::strcmp
6.4 Looping Statements
6.5 while Statement
6.6 break Statement
6.7 continue Statement
6.8 The Assignment Anywhere Side Effect
6.9 Programming Exercises
6.10 Answers to Chapter Questions
Chapter 7: The Programming Process
7.1 Setting Up Your Work Area
7.2 The Specification
7.3 Code Design
7.4 The Prototype
7.5 The Makefile
7.6 Testing
7.7 Debugging
7.8 Maintenance
7.9 Revisions
7.10 Electronic Archaeology
7.11 Mark Up the Program
7.12 Use the Debugger
7.13 Use the Text Editor as a Browser
7.14 Add Comments
7.15 Programming Exercises
Part II: Simple Programming
Chapter 8: More Control Statements
8.1 for Statement
8.2 switch Statement
8.3 switch, break, and continue
8.4 Programming Exercises
8.5 Answers to Chapter Questions
Chapter 9: Variable Scope and Functions
9.1 Scope and Storage Class
9.2 Namespaces
9.3 Functions
9.4 Summary of Parameter Types
9.5 Recursion
9.6 Structured Programming Basics
9.7 Real-World Programming
9.8 Programming Exercises
9.9 Answers to Chapter Questions
Chapter 10: The C++ Preprocessor
10.1 #define Statement
10.2 Conditional Compilation
10.3 #include Files
10.4 Parameterized Macros
10.5 Advanced Features
10.6 Summary
10.7 Programming Exercises
10.8 Answers to Chapter Questions
Chapter 11: Bit Operations
11.1 Bit Operators
11.2 The AND Operator (&)
11.3 Bitwise OR ( )
11.4 The Bitwise Exclusive OR (^)
11.5 The Ones Complement Operator (NOT) (~)
11.6 The Left and Right Shift Operators ()
11.7 Setting, Clearing, and Testing Bits
11.8 Bitmapped Graphics
11.9 Programming Exercises
11.10 Answers to Chapter Questions
Part III: Advanced Types and Classes
Chapter 12: Advanced Types
12.1 Structures
12.2 Unions
12.3 typedef
12.4 enum Type
12.5 Bit Members or Packed Structures
12.6 Arrays of Structures
12.7 Programming Exercises
12.8 Answers to Chapter Questions
Chapter 13: Simple Classes
13.1 Stacks
13.2 Improved Stack
13.3 Using a Class
13.4 Introduction to Constructors and Destructors
13.5 Automatically Generated Member Functions
13.6 Shortcuts
13.7 Style
13.8 Structures Versus Classes
13.9 Programming Exercises
Chapter 14: More on Classes
14.1 Friends
14.2 Constant Functions
14.3 Constant Members
14.4 Static Member Variables
14.5 Static Member Functions
14.6 The Meaning of static
14.7 Programming Exercises
Chapter 15: Simple Pointers
15.1 const Pointers
15.2 Pointers and Printing
15.3 Pointers and Arrays
15.4 The reinterpret_cast
15.5 Pointers and Structures
15.6 Command-Line Arguments
15.7 Programming Exercises
15.8 Answers to Chapter Questions
Part IV: Advanced Programming Concepts
Chapter 16: File Input/Output
16.1 C++ File I/O
16.2 Conversion Routines
16.3 Binary and ASCII Files
16.4 The End-of-Line Puzzle
16.5 Binary I/O
16.6 Buffering Problems
16.7 Unbuffered I/O
16.8 Designing File Formats
16.9 C-Style I/O Routines
16.10 C-Style Conversion Routines
16.11 C-Style Binary I/O
16.12 C- Versus C++- Style I/O
16.13 Programming Exercises
16.14 Answers to Chapter Questions
Chapter 17: Debugging and Optimization
17.1 Code Reviews
17.2 Serial Debugging
17.3 Going Through the Output
17.4 Interactive Debuggers
17.5 Debugging a Binary Search
17.6 Interactive Debugging Tips and Tricks
17.7 Runtime Errors
17.8 Optimization
17.9 How to Optimize
17.10 Case Study: Inline Functions Versus Normal Functions
17.11 Case Study: Optimizing a Color-Rendering Algorithm
17.12 Programming Exercises
17.13 Answers to Chapter Questions
Chapter 18: Operator Overloading
18.1 Creating a Simple Fixed-Point Class
18.2 Operator Functions
18.3 Operator Member Functions
18.4 Warts
18.5 Full Definition of the Fixed-Point Class
18.6 Programming Exercises
18.7 Answers to Chapter Questions
Chapter 19: Floating Point
19.1 Floating-Point Format
19.2 Floating Addition/Subtraction
19.3 Multiplication and Division
19.4 Overflow and Underflow
19.5 Roundoff Error
19.6 Accuracy
19.7 Minimizing Roundoff Error
19.8 Determining Accuracy
19.9 Precision and Speed
19.10 Power Series
19.11 Programming Exercises
Chapter 20: Advanced Pointers
20.1 Pointers, Structures, and Classes
20.2 delete Operator
20.3 Linked Lists
20.4 Ordered Linked Lists
20.5 Doubly Linked Lists
20.6 Trees
20.7 Printing a Tree
20.8 The Rest of the Program
20.9 Data Structures for a Chess Program
20.10 Programming Exercises
20.11 Answers to Chapter Questions
Chapter 21: Advanced Classes
21.1 Derived Classes
21.2 Virtual Functions
21.3 Virtual Classes
21.4 Function Hiding in Derived Classes
21.5 Constructors and Destructors in Derived Classes
21.6 The dynamic_cast Operator
21.7 Summary
21.8 Programming Exercises
21.9 Answers to Chapter Questions
Part V: Other Language Features
Chapter 22: Exceptions
22.1 Adding Exceptions to the Stack Class
22.2 Exceptions Versus assert
22.3 Programming Exercises
Chapter 23: Modular Programming
23.1 Modules
23.2 Public and Private
23.3 The extern Storage Class
23.4 Headers
23.5 The Body of the Module
23.6 A Program to Use Infinite Arrays
23.7 The Makefile for Multiple Files
23.8 Using the Infinite Array
23.9 Dividing a Task into Modules
23.10 Module Design Guidelines
23.11 Programming Exercises
Chapter 24: Templates
24.1 What Is a Template?
24.2 Templates: The Hard Way
24.3 Templates: The C++ Way
24.4 Function Specialization
24.5 Class Templates
24.6 Class Specialization
24.7 Implementation Details
24.8 Advanced Features
24.9 Summary
24.10 Programming Exercises
Chapter 25: Standard Template Library
25.1 STL Basics
25.2 Class List-A Set of Students
25.3 Creating a Waiting List with the STL List
25.4 Storing Grades in a STL Map
25.5 Putting It All Together
25.6 Practical Considerations When Using the STL
25.7 Getting More Information
25.8 Exercises
Chapter 26: Program Design
26.1 Design Goals
26.2 Design Factors
26.3 Design Principles
26.4 Coding
26.5 Objects
26.6 Real-World Design Techniques
26.7 Conclusion
Chapter 27: Putting It All Together
27.1 Requirements
27.2 Code Design
27.3 Coding
27.4 Functional Description
27.5 Testing
27.6 Revisions
27.7 A Final Warning
27.8 Program Files
27.9 Programming Exercises
Chapter 28: From C to C++
28.1 K&R-Style Functions
28.2 struct
28.3 malloc and free
28.4 Turning Structures into Classes
28.5 setjmp and longjmp
28.6 Mixing C and C++ Code
28.7 Summary
28.8 Programming Exercise
Chapter 29: C++'s Dustier Corners
29.1 do/while
29.2 goto
29.3 The ?: Construct
29.4 The Comma Operator
29.5 Overloading the ( ) Operator
29.6 Pointers to Members
29.7 The asm Statement
29.8 The mutable Qualifier
29.9 Run Time Type Identification
29.10 Trigraphs
29.11 Answers to Chapter Questions
Chapter 30: Programming Adages
30.1 General
30.2 Design
30.3 Declarations
30.4 switch Statement
30.5 Preprocessor
30.6 Style
30.7 Compiling
30.8 The Ten Commandments for C++ Programmers
30.9 Final Note
30.10 Answers to Chapter Questions
Part VI: Appendixes
Appendix A: ASCII Table
Appendix B: Ranges
Appendix C: Operator Precedence Rules
C.1 Standard Rules
C.2 Practical Subset of the Operator Precedence Rules
Appendix D: Computing Sine Using a Power Series
Appendix E: Resources
E.1 Compilers
E.2 Standard Template Library
E.3 Standards
E.4 Programming Tools
Colophon
Scope of This Handbook
How This Book Is Organized
How to Read This Book If You Already Know C
Font Conventions
How to Contact Us
Acknowledgments for the First Edition
Acknowledgments for the Second Edition
Part I: The Basics
Chapter 1: What Is C++?
1.1 A Brief History of C++
1.2 C++ Organization
1.3 How to Learn C++
Chapter 2: The Basics of Program Writing
2.1 Programs from Conception to Execution
2.2 Creating a Real Program
2.3 Getting Help in Unix
2.4 Getting Help in an IDE
2.5 Programming Exercises
Chapter 3: Style
3.1 Comments
3.2 C++ Code
3.3 Naming Style
3.4 Coding Religion
3.5 Indentation and Code Format
3.6 Clarity
3.7 Simplicity
3.8 Consistency and Organization
3.9 Further Reading
3.10 Summary
Chapter 4: Basic Declarations and Expressions
4.1 Basic Program Structure
4.2 Simple Expressions
4.3 The std::cout Output Object
4.4 Variables and Storage
4.5 Variable Declarations
4.6 Integers
4.7 Assignment Statements
4.8 Floating-Point Numbers
4.9 Floating-Point Divide Versus Integer Divide
4.10 Characters
4.11 Wide Characters
4.12 Boolean Type
4.13 Programming Exercises
4.14 Answers to Chapter Questions
Chapter 5: Arrays, Qualifiers, and Reading Numbers
5.1 Arrays
5.2 Strings
5.3 Reading Data
5.4 Initializing Variables
5.5 Multidimensional Arrays
5.6 C-Style Strings
5.7 Types of Integers
5.8 Types of Floats
5.9 Constant and Reference Declarations
5.10 Qualifiers
5.11 Hexadecimal and Octal Constants
5.12 Operators for Performing Shortcuts
5.13 Side Effects
5.14 Programming Exercises
5.15 Answers to Chapter Questions
Chapter 6: Decision and Control Statements
6.1 if Statement
6.2 else Statement
6.3 How Not to Use std::strcmp
6.4 Looping Statements
6.5 while Statement
6.6 break Statement
6.7 continue Statement
6.8 The Assignment Anywhere Side Effect
6.9 Programming Exercises
6.10 Answers to Chapter Questions
Chapter 7: The Programming Process
7.1 Setting Up Your Work Area
7.2 The Specification
7.3 Code Design
7.4 The Prototype
7.5 The Makefile
7.6 Testing
7.7 Debugging
7.8 Maintenance
7.9 Revisions
7.10 Electronic Archaeology
7.11 Mark Up the Program
7.12 Use the Debugger
7.13 Use the Text Editor as a Browser
7.14 Add Comments
7.15 Programming Exercises
Part II: Simple Programming
Chapter 8: More Control Statements
8.1 for Statement
8.2 switch Statement
8.3 switch, break, and continue
8.4 Programming Exercises
8.5 Answers to Chapter Questions
Chapter 9: Variable Scope and Functions
9.1 Scope and Storage Class
9.2 Namespaces
9.3 Functions
9.4 Summary of Parameter Types
9.5 Recursion
9.6 Structured Programming Basics
9.7 Real-World Programming
9.8 Programming Exercises
9.9 Answers to Chapter Questions
Chapter 10: The C++ Preprocessor
10.1 #define Statement
10.2 Conditional Compilation
10.3 #include Files
10.4 Parameterized Macros
10.5 Advanced Features
10.6 Summary
10.7 Programming Exercises
10.8 Answers to Chapter Questions
Chapter 11: Bit Operations
11.1 Bit Operators
11.2 The AND Operator (&)
11.3 Bitwise OR ( )
11.4 The Bitwise Exclusive OR (^)
11.5 The Ones Complement Operator (NOT) (~)
11.6 The Left and Right Shift Operators ()
11.7 Setting, Clearing, and Testing Bits
11.8 Bitmapped Graphics
11.9 Programming Exercises
11.10 Answers to Chapter Questions
Part III: Advanced Types and Classes
Chapter 12: Advanced Types
12.1 Structures
12.2 Unions
12.3 typedef
12.4 enum Type
12.5 Bit Members or Packed Structures
12.6 Arrays of Structures
12.7 Programming Exercises
12.8 Answers to Chapter Questions
Chapter 13: Simple Classes
13.1 Stacks
13.2 Improved Stack
13.3 Using a Class
13.4 Introduction to Constructors and Destructors
13.5 Automatically Generated Member Functions
13.6 Shortcuts
13.7 Style
13.8 Structures Versus Classes
13.9 Programming Exercises
Chapter 14: More on Classes
14.1 Friends
14.2 Constant Functions
14.3 Constant Members
14.4 Static Member Variables
14.5 Static Member Functions
14.6 The Meaning of static
14.7 Programming Exercises
Chapter 15: Simple Pointers
15.1 const Pointers
15.2 Pointers and Printing
15.3 Pointers and Arrays
15.4 The reinterpret_cast
15.5 Pointers and Structures
15.6 Command-Line Arguments
15.7 Programming Exercises
15.8 Answers to Chapter Questions
Part IV: Advanced Programming Concepts
Chapter 16: File Input/Output
16.1 C++ File I/O
16.2 Conversion Routines
16.3 Binary and ASCII Files
16.4 The End-of-Line Puzzle
16.5 Binary I/O
16.6 Buffering Problems
16.7 Unbuffered I/O
16.8 Designing File Formats
16.9 C-Style I/O Routines
16.10 C-Style Conversion Routines
16.11 C-Style Binary I/O
16.12 C- Versus C++- Style I/O
16.13 Programming Exercises
16.14 Answers to Chapter Questions
Chapter 17: Debugging and Optimization
17.1 Code Reviews
17.2 Serial Debugging
17.3 Going Through the Output
17.4 Interactive Debuggers
17.5 Debugging a Binary Search
17.6 Interactive Debugging Tips and Tricks
17.7 Runtime Errors
17.8 Optimization
17.9 How to Optimize
17.10 Case Study: Inline Functions Versus Normal Functions
17.11 Case Study: Optimizing a Color-Rendering Algorithm
17.12 Programming Exercises
17.13 Answers to Chapter Questions
Chapter 18: Operator Overloading
18.1 Creating a Simple Fixed-Point Class
18.2 Operator Functions
18.3 Operator Member Functions
18.4 Warts
18.5 Full Definition of the Fixed-Point Class
18.6 Programming Exercises
18.7 Answers to Chapter Questions
Chapter 19: Floating Point
19.1 Floating-Point Format
19.2 Floating Addition/Subtraction
19.3 Multiplication and Division
19.4 Overflow and Underflow
19.5 Roundoff Error
19.6 Accuracy
19.7 Minimizing Roundoff Error
19.8 Determining Accuracy
19.9 Precision and Speed
19.10 Power Series
19.11 Programming Exercises
Chapter 20: Advanced Pointers
20.1 Pointers, Structures, and Classes
20.2 delete Operator
20.3 Linked Lists
20.4 Ordered Linked Lists
20.5 Doubly Linked Lists
20.6 Trees
20.7 Printing a Tree
20.8 The Rest of the Program
20.9 Data Structures for a Chess Program
20.10 Programming Exercises
20.11 Answers to Chapter Questions
Chapter 21: Advanced Classes
21.1 Derived Classes
21.2 Virtual Functions
21.3 Virtual Classes
21.4 Function Hiding in Derived Classes
21.5 Constructors and Destructors in Derived Classes
21.6 The dynamic_cast Operator
21.7 Summary
21.8 Programming Exercises
21.9 Answers to Chapter Questions
Part V: Other Language Features
Chapter 22: Exceptions
22.1 Adding Exceptions to the Stack Class
22.2 Exceptions Versus assert
22.3 Programming Exercises
Chapter 23: Modular Programming
23.1 Modules
23.2 Public and Private
23.3 The extern Storage Class
23.4 Headers
23.5 The Body of the Module
23.6 A Program to Use Infinite Arrays
23.7 The Makefile for Multiple Files
23.8 Using the Infinite Array
23.9 Dividing a Task into Modules
23.10 Module Design Guidelines
23.11 Programming Exercises
Chapter 24: Templates
24.1 What Is a Template?
24.2 Templates: The Hard Way
24.3 Templates: The C++ Way
24.4 Function Specialization
24.5 Class Templates
24.6 Class Specialization
24.7 Implementation Details
24.8 Advanced Features
24.9 Summary
24.10 Programming Exercises
Chapter 25: Standard Template Library
25.1 STL Basics
25.2 Class List-A Set of Students
25.3 Creating a Waiting List with the STL List
25.4 Storing Grades in a STL Map
25.5 Putting It All Together
25.6 Practical Considerations When Using the STL
25.7 Getting More Information
25.8 Exercises
Chapter 26: Program Design
26.1 Design Goals
26.2 Design Factors
26.3 Design Principles
26.4 Coding
26.5 Objects
26.6 Real-World Design Techniques
26.7 Conclusion
Chapter 27: Putting It All Together
27.1 Requirements
27.2 Code Design
27.3 Coding
27.4 Functional Description
27.5 Testing
27.6 Revisions
27.7 A Final Warning
27.8 Program Files
27.9 Programming Exercises
Chapter 28: From C to C++
28.1 K&R-Style Functions
28.2 struct
28.3 malloc and free
28.4 Turning Structures into Classes
28.5 setjmp and longjmp
28.6 Mixing C and C++ Code
28.7 Summary
28.8 Programming Exercise
Chapter 29: C++'s Dustier Corners
29.1 do/while
29.2 goto
29.3 The ?: Construct
29.4 The Comma Operator
29.5 Overloading the ( ) Operator
29.6 Pointers to Members
29.7 The asm Statement
29.8 The mutable Qualifier
29.9 Run Time Type Identification
29.10 Trigraphs
29.11 Answers to Chapter Questions
Chapter 30: Programming Adages
30.1 General
30.2 Design
30.3 Declarations
30.4 switch Statement
30.5 Preprocessor
30.6 Style
30.7 Compiling
30.8 The Ten Commandments for C++ Programmers
30.9 Final Note
30.10 Answers to Chapter Questions
Part VI: Appendixes
Appendix A: ASCII Table
Appendix B: Ranges
Appendix C: Operator Precedence Rules
C.1 Standard Rules
C.2 Practical Subset of the Operator Precedence Rules
Appendix D: Computing Sine Using a Power Series
Appendix E: Resources
E.1 Compilers
E.2 Standard Template Library
E.3 Standards
E.4 Programming Tools
Colophon
Preface
Scope of This Handbook
How This Book Is Organized
How to Read This Book If You Already Know C
Font Conventions
How to Contact Us
Acknowledgments for the First Edition
Acknowledgments for the Second Edition
Part I: The Basics
Chapter 1: What Is C++?
1.1 A Brief History of C++
1.2 C++ Organization
1.3 How to Learn C++
Chapter 2: The Basics of Program Writing
2.1 Programs from Conception to Execution
2.2 Creating a Real Program
2.3 Getting Help in Unix
2.4 Getting Help in an IDE
2.5 Programming Exercises
Chapter 3: Style
3.1 Comments
3.2 C++ Code
3.3 Naming Style
3.4 Coding Religion
3.5 Indentation and Code Format
3.6 Clarity
3.7 Simplicity
3.8 Consistency and Organization
3.9 Further Reading
3.10 Summary
Chapter 4: Basic Declarations and Expressions
4.1 Basic Program Structure
4.2 Simple Expressions
4.3 The std::cout Output Object
4.4 Variables and Storage
4.5 Variable Declarations
4.6 Integers
4.7 Assignment Statements
4.8 Floating-Point Numbers
4.9 Floating-Point Divide Versus Integer Divide
4.10 Characters
4.11 Wide Characters
4.12 Boolean Type
4.13 Programming Exercises
4.14 Answers to Chapter Questions
Chapter 5: Arrays, Qualifiers, and Reading Numbers
5.1 Arrays
5.2 Strings
5.3 Reading Data
5.4 Initializing Variables
5.5 Multidimensional Arrays
5.6 C-Style Strings
5.7 Types of Integers
5.8 Types of Floats
5.9 Constant and Reference Declarations
5.10 Qualifiers
5.11 Hexadecimal and Octal Constants
5.12 Operators for Performing Shortcuts
5.13 Side Effects
5.14 Programming Exercises
5.15 Answers to Chapter Questions
Chapter 6: Decision and Control Statements
6.1 if Statement
6.2 else Statement
6.3 How Not to Use std::strcmp
6.4 Looping Statements
6.5 while Statement
6.6 break Statement
6.7 continue Statement
6.8 The Assignment Anywhere Side Effect
6.9 Programming Exercises
6.10 Answers to Chapter Questions
Chapter 7: The Programming Process
7.1 Setting Up Your Work Area
7.2 The Specification
7.3 Code Design
7.4 The Prototype
7.5 The Makefile
7.6 Testing
7.7 Debugging
7.8 Maintenance
7.9 Revisions
7.10 Electronic Archaeology
7.11 Mark Up the Program
7.12 Use the Debugger
7.13 Use the Text Editor as a Browser
7.14 Add Comments
7.15 Programming Exercises
Part II: Simple Programming
Chapter 8: More Control Statements
8.1 for Statement
8.2 switch Statement
8.3 switch, break, and continue
8.4 Programming Exercises
8.5 Answers to Chapter Questions
Chapter 9: Variable Scope and Functions
9.1 Scope and Storage Class
9.2 Namespaces
9.3 Functions
9.4 Summary of Parameter Types
9.5 Recursion
9.6 Structured Programming Basics
9.7 Real-World Programming
9.8 Programming Exercises
9.9 Answers to Chapter Questions
Chapter 10: The C++ Preprocessor
10.1 #define Statement
10.2 Conditional Compilation
10.3 #include Files
10.4 Parameterized Macros
10.5 Advanced Features
10.6 Summary
10.7 Programming Exercises
10.8 Answers to Chapter Questions
Chapter 11: Bit Operations
11.1 Bit Operators
11.2 The AND Operator (&)
11.3 Bitwise OR ( )
11.4 The Bitwise Exclusive OR (^)
11.5 The Ones Complement Operator (NOT) (~)
11.6 The Left and Right Shift Operators ()
11.7 Setting, Clearing, and Testing Bits
11.8 Bitmapped Graphics
11.9 Programming Exercises
11.10 Answers to Chapter Questions
Part III: Advanced Types and Classes
Chapter 12: Advanced Types
12.1 Structures
12.2 Unions
12.3 typedef
12.4 enum Type
12.5 Bit Members or Packed Structures
12.6 Arrays of Structures
12.7 Programming Exercises
12.8 Answers to Chapter Questions
Chapter 13: Simple Classes
13.1 Stacks
13.2 Improved Stack
13.3 Using a Class
13.4 Introduction to Constructors and Destructors
13.5 Automatically Generated Member Functions
13.6 Shortcuts
13.7 Style
13.8 Structures Versus Classes
13.9 Programming Exercises
Chapter 14: More on Classes
14.1 Friends
14.2 Constant Functions
14.3 Constant Members
14.4 Static Member Variables
14.5 Static Member Functions
14.6 The Meaning of static
14.7 Programming Exercises
Chapter 15: Simple Pointers
15.1 const Pointers
15.2 Pointers and Printing
15.3 Pointers and Arrays
15.4 The reinterpret_cast
15.5 Pointers and Structures
15.6 Command-Line Arguments
15.7 Programming Exercises
15.8 Answers to Chapter Questions
Part IV: Advanced Programming Concepts
Chapter 16: File Input/Output
16.1 C++ File I/O
16.2 Conversion Routines
16.3 Binary and ASCII Files
16.4 The End-of-Line Puzzle
16.5 Binary I/O
16.6 Buffering Problems
16.7 Unbuffered I/O
16.8 Designing File Formats
16.9 C-Style I/O Routines
16.10 C-Style Conversion Routines
16.11 C-Style Binary I/O
16.12 C- Versus C++- Style I/O
16.13 Programming Exercises
16.14 Answers to Chapter Questions
Chapter 17: Debugging and Optimization
17.1 Code Reviews
17.2 Serial Debugging
17.3 Going Through the Output
17.4 Interactive Debuggers
17.5 Debugging a Binary Search
17.6 Interactive Debugging Tips and Tricks
17.7 Runtime Errors
17.8 Optimization
17.9 How to Optimize
17.10 Case Study: Inline Functions Versus Normal Functions
17.11 Case Study: Optimizing a Color-Rendering Algorithm
17.12 Programming Exercises
17.13 Answers to Chapter Questions
Chapter 18: Operator Overloading
18.1 Creating a Simple Fixed-Point Class
18.2 Operator Functions
18.3 Operator Member Functions
18.4 Warts
18.5 Full Definition of the Fixed-Point Class
18.6 Programming Exercises
18.7 Answers to Chapter Questions
Chapter 19: Floating Point
19.1 Floating-Point Format
19.2 Floating Addition/Subtraction
19.3 Multiplication and Division
19.4 Overflow and Underflow
19.5 Roundoff Error
19.6 Accuracy
19.7 Minimizing Roundoff Error
19.8 Determining Accuracy
19.9 Precision and Speed
19.10 Power Series
19.11 Programming Exercises
Chapter 20: Advanced Pointers
20.1 Pointers, Structures, and Classes
20.2 delete Operator
20.3 Linked Lists
20.4 Ordered Linked Lists
20.5 Doubly Linked Lists
20.6 Trees
20.7 Printing a Tree
20.8 The Rest of the Program
20.9 Data Structures for a Chess Program
20.10 Programming Exercises
20.11 Answers to Chapter Questions
Chapter 21: Advanced Classes
21.1 Derived Classes
21.2 Virtual Functions
21.3 Virtual Classes
21.4 Function Hiding in Derived Classes
21.5 Constructors and Destructors in Derived Classes
21.6 The dynamic_cast Operator
21.7 Summary
21.8 Programming Exercises
21.9 Answers to Chapter Questions
Part V: Other Language Features
Chapter 22: Exceptions
22.1 Adding Exceptions to the Stack Class
22.2 Exceptions Versus assert
22.3 Programming Exercises
Chapter 23: Modular Programming
23.1 Modules
23.2 Public and Private
23.3 The extern Storage Class
23.4 Headers
23.5 The Body of the Module
23.6 A Program to Use Infinite Arrays
23.7 The Makefile for Multiple Files
23.8 Using the Infinite Array
23.9 Dividing a Task into Modules
23.10 Module Design Guidelines
23.11 Programming Exercises
Chapter 24: Templates
24.1 What Is a Template?
24.2 Templates: The Hard Way
24.3 Templates: The C++ Way
24.4 Function Specialization
24.5 Class Templates
24.6 Class Specialization
24.7 Implementation Details
24.8 Advanced Features
24.9 Summary
24.10 Programming Exercises
Chapter 25: Standard Template Library
25.1 STL Basics
25.2 Class List-A Set of Students
25.3 Creating a Waiting List with the STL List
25.4 Storing Grades in a STL Map
25.5 Putting It All Together
25.6 Practical Considerations When Using the STL
25.7 Getting More Information
25.8 Exercises
Chapter 26: Program Design
26.1 Design Goals
26.2 Design Factors
26.3 Design Principles
26.4 Coding
26.5 Objects
26.6 Real-World Design Techniques
26.7 Conclusion
Chapter 27: Putting It All Together
27.1 Requirements
27.2 Code Design
27.3 Coding
27.4 Functional Description
27.5 Testing
27.6 Revisions
27.7 A Final Warning
27.8 Program Files
27.9 Programming Exercises
Chapter 28: From C to C++
28.1 K&R-Style Functions
28.2 struct
28.3 malloc and free
28.4 Turning Structures into Classes
28.5 setjmp and longjmp
28.6 Mixing C and C++ Code
28.7 Summary
28.8 Programming Exercise
Chapter 29: C++'s Dustier Corners
29.1 do/while
29.2 goto
29.3 The ?: Construct
29.4 The Comma Operator
29.5 Overloading the ( ) Operator
29.6 Pointers to Members
29.7 The asm Statement
29.8 The mutable Qualifier
29.9 Run Time Type Identification
29.10 Trigraphs
29.11 Answers to Chapter Questions
Chapter 30: Programming Adages
30.1 General
30.2 Design
30.3 Declarations
30.4 switch Statement
30.5 Preprocessor
30.6 Style
30.7 Compiling
30.8 The Ten Commandments for C++ Programmers
30.9 Final Note
30.10 Answers to Chapter Questions
Part VI: Appendixes
Appendix A: ASCII Table
Appendix B: Ranges
Appendix C: Operator Precedence Rules
C.1 Standard Rules
C.2 Practical Subset of the Operator Precedence Rules
Appendix D: Computing Sine Using a Power Series
Appendix E: Resources
E.1 Compilers
E.2 Standard Template Library
E.3 Standards
E.4 Programming Tools
Colophon
Scope of This Handbook
How This Book Is Organized
How to Read This Book If You Already Know C
Font Conventions
How to Contact Us
Acknowledgments for the First Edition
Acknowledgments for the Second Edition
Part I: The Basics
Chapter 1: What Is C++?
1.1 A Brief History of C++
1.2 C++ Organization
1.3 How to Learn C++
Chapter 2: The Basics of Program Writing
2.1 Programs from Conception to Execution
2.2 Creating a Real Program
2.3 Getting Help in Unix
2.4 Getting Help in an IDE
2.5 Programming Exercises
Chapter 3: Style
3.1 Comments
3.2 C++ Code
3.3 Naming Style
3.4 Coding Religion
3.5 Indentation and Code Format
3.6 Clarity
3.7 Simplicity
3.8 Consistency and Organization
3.9 Further Reading
3.10 Summary
Chapter 4: Basic Declarations and Expressions
4.1 Basic Program Structure
4.2 Simple Expressions
4.3 The std::cout Output Object
4.4 Variables and Storage
4.5 Variable Declarations
4.6 Integers
4.7 Assignment Statements
4.8 Floating-Point Numbers
4.9 Floating-Point Divide Versus Integer Divide
4.10 Characters
4.11 Wide Characters
4.12 Boolean Type
4.13 Programming Exercises
4.14 Answers to Chapter Questions
Chapter 5: Arrays, Qualifiers, and Reading Numbers
5.1 Arrays
5.2 Strings
5.3 Reading Data
5.4 Initializing Variables
5.5 Multidimensional Arrays
5.6 C-Style Strings
5.7 Types of Integers
5.8 Types of Floats
5.9 Constant and Reference Declarations
5.10 Qualifiers
5.11 Hexadecimal and Octal Constants
5.12 Operators for Performing Shortcuts
5.13 Side Effects
5.14 Programming Exercises
5.15 Answers to Chapter Questions
Chapter 6: Decision and Control Statements
6.1 if Statement
6.2 else Statement
6.3 How Not to Use std::strcmp
6.4 Looping Statements
6.5 while Statement
6.6 break Statement
6.7 continue Statement
6.8 The Assignment Anywhere Side Effect
6.9 Programming Exercises
6.10 Answers to Chapter Questions
Chapter 7: The Programming Process
7.1 Setting Up Your Work Area
7.2 The Specification
7.3 Code Design
7.4 The Prototype
7.5 The Makefile
7.6 Testing
7.7 Debugging
7.8 Maintenance
7.9 Revisions
7.10 Electronic Archaeology
7.11 Mark Up the Program
7.12 Use the Debugger
7.13 Use the Text Editor as a Browser
7.14 Add Comments
7.15 Programming Exercises
Part II: Simple Programming
Chapter 8: More Control Statements
8.1 for Statement
8.2 switch Statement
8.3 switch, break, and continue
8.4 Programming Exercises
8.5 Answers to Chapter Questions
Chapter 9: Variable Scope and Functions
9.1 Scope and Storage Class
9.2 Namespaces
9.3 Functions
9.4 Summary of Parameter Types
9.5 Recursion
9.6 Structured Programming Basics
9.7 Real-World Programming
9.8 Programming Exercises
9.9 Answers to Chapter Questions
Chapter 10: The C++ Preprocessor
10.1 #define Statement
10.2 Conditional Compilation
10.3 #include Files
10.4 Parameterized Macros
10.5 Advanced Features
10.6 Summary
10.7 Programming Exercises
10.8 Answers to Chapter Questions
Chapter 11: Bit Operations
11.1 Bit Operators
11.2 The AND Operator (&)
11.3 Bitwise OR ( )
11.4 The Bitwise Exclusive OR (^)
11.5 The Ones Complement Operator (NOT) (~)
11.6 The Left and Right Shift Operators ()
11.7 Setting, Clearing, and Testing Bits
11.8 Bitmapped Graphics
11.9 Programming Exercises
11.10 Answers to Chapter Questions
Part III: Advanced Types and Classes
Chapter 12: Advanced Types
12.1 Structures
12.2 Unions
12.3 typedef
12.4 enum Type
12.5 Bit Members or Packed Structures
12.6 Arrays of Structures
12.7 Programming Exercises
12.8 Answers to Chapter Questions
Chapter 13: Simple Classes
13.1 Stacks
13.2 Improved Stack
13.3 Using a Class
13.4 Introduction to Constructors and Destructors
13.5 Automatically Generated Member Functions
13.6 Shortcuts
13.7 Style
13.8 Structures Versus Classes
13.9 Programming Exercises
Chapter 14: More on Classes
14.1 Friends
14.2 Constant Functions
14.3 Constant Members
14.4 Static Member Variables
14.5 Static Member Functions
14.6 The Meaning of static
14.7 Programming Exercises
Chapter 15: Simple Pointers
15.1 const Pointers
15.2 Pointers and Printing
15.3 Pointers and Arrays
15.4 The reinterpret_cast
15.5 Pointers and Structures
15.6 Command-Line Arguments
15.7 Programming Exercises
15.8 Answers to Chapter Questions
Part IV: Advanced Programming Concepts
Chapter 16: File Input/Output
16.1 C++ File I/O
16.2 Conversion Routines
16.3 Binary and ASCII Files
16.4 The End-of-Line Puzzle
16.5 Binary I/O
16.6 Buffering Problems
16.7 Unbuffered I/O
16.8 Designing File Formats
16.9 C-Style I/O Routines
16.10 C-Style Conversion Routines
16.11 C-Style Binary I/O
16.12 C- Versus C++- Style I/O
16.13 Programming Exercises
16.14 Answers to Chapter Questions
Chapter 17: Debugging and Optimization
17.1 Code Reviews
17.2 Serial Debugging
17.3 Going Through the Output
17.4 Interactive Debuggers
17.5 Debugging a Binary Search
17.6 Interactive Debugging Tips and Tricks
17.7 Runtime Errors
17.8 Optimization
17.9 How to Optimize
17.10 Case Study: Inline Functions Versus Normal Functions
17.11 Case Study: Optimizing a Color-Rendering Algorithm
17.12 Programming Exercises
17.13 Answers to Chapter Questions
Chapter 18: Operator Overloading
18.1 Creating a Simple Fixed-Point Class
18.2 Operator Functions
18.3 Operator Member Functions
18.4 Warts
18.5 Full Definition of the Fixed-Point Class
18.6 Programming Exercises
18.7 Answers to Chapter Questions
Chapter 19: Floating Point
19.1 Floating-Point Format
19.2 Floating Addition/Subtraction
19.3 Multiplication and Division
19.4 Overflow and Underflow
19.5 Roundoff Error
19.6 Accuracy
19.7 Minimizing Roundoff Error
19.8 Determining Accuracy
19.9 Precision and Speed
19.10 Power Series
19.11 Programming Exercises
Chapter 20: Advanced Pointers
20.1 Pointers, Structures, and Classes
20.2 delete Operator
20.3 Linked Lists
20.4 Ordered Linked Lists
20.5 Doubly Linked Lists
20.6 Trees
20.7 Printing a Tree
20.8 The Rest of the Program
20.9 Data Structures for a Chess Program
20.10 Programming Exercises
20.11 Answers to Chapter Questions
Chapter 21: Advanced Classes
21.1 Derived Classes
21.2 Virtual Functions
21.3 Virtual Classes
21.4 Function Hiding in Derived Classes
21.5 Constructors and Destructors in Derived Classes
21.6 The dynamic_cast Operator
21.7 Summary
21.8 Programming Exercises
21.9 Answers to Chapter Questions
Part V: Other Language Features
Chapter 22: Exceptions
22.1 Adding Exceptions to the Stack Class
22.2 Exceptions Versus assert
22.3 Programming Exercises
Chapter 23: Modular Programming
23.1 Modules
23.2 Public and Private
23.3 The extern Storage Class
23.4 Headers
23.5 The Body of the Module
23.6 A Program to Use Infinite Arrays
23.7 The Makefile for Multiple Files
23.8 Using the Infinite Array
23.9 Dividing a Task into Modules
23.10 Module Design Guidelines
23.11 Programming Exercises
Chapter 24: Templates
24.1 What Is a Template?
24.2 Templates: The Hard Way
24.3 Templates: The C++ Way
24.4 Function Specialization
24.5 Class Templates
24.6 Class Specialization
24.7 Implementation Details
24.8 Advanced Features
24.9 Summary
24.10 Programming Exercises
Chapter 25: Standard Template Library
25.1 STL Basics
25.2 Class List-A Set of Students
25.3 Creating a Waiting List with the STL List
25.4 Storing Grades in a STL Map
25.5 Putting It All Together
25.6 Practical Considerations When Using the STL
25.7 Getting More Information
25.8 Exercises
Chapter 26: Program Design
26.1 Design Goals
26.2 Design Factors
26.3 Design Principles
26.4 Coding
26.5 Objects
26.6 Real-World Design Techniques
26.7 Conclusion
Chapter 27: Putting It All Together
27.1 Requirements
27.2 Code Design
27.3 Coding
27.4 Functional Description
27.5 Testing
27.6 Revisions
27.7 A Final Warning
27.8 Program Files
27.9 Programming Exercises
Chapter 28: From C to C++
28.1 K&R-Style Functions
28.2 struct
28.3 malloc and free
28.4 Turning Structures into Classes
28.5 setjmp and longjmp
28.6 Mixing C and C++ Code
28.7 Summary
28.8 Programming Exercise
Chapter 29: C++'s Dustier Corners
29.1 do/while
29.2 goto
29.3 The ?: Construct
29.4 The Comma Operator
29.5 Overloading the ( ) Operator
29.6 Pointers to Members
29.7 The asm Statement
29.8 The mutable Qualifier
29.9 Run Time Type Identification
29.10 Trigraphs
29.11 Answers to Chapter Questions
Chapter 30: Programming Adages
30.1 General
30.2 Design
30.3 Declarations
30.4 switch Statement
30.5 Preprocessor
30.6 Style
30.7 Compiling
30.8 The Ten Commandments for C++ Programmers
30.9 Final Note
30.10 Answers to Chapter Questions
Part VI: Appendixes
Appendix A: ASCII Table
Appendix B: Ranges
Appendix C: Operator Precedence Rules
C.1 Standard Rules
C.2 Practical Subset of the Operator Precedence Rules
Appendix D: Computing Sine Using a Power Series
Appendix E: Resources
E.1 Compilers
E.2 Standard Template Library
E.3 Standards
E.4 Programming Tools
Colophon