HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Learning C++ Doesn’t Have to Be Difficult!
Have you ever wanted to learn programming? Have you ever wanted to learn the C++ language behind many of today’s hottest games, business programs, and even advanced spacecraft? C++ Without Fear, Third Edition, is the ideal way to get started. Now updated for the newest C++14 standard and the free Microsoft Visual C++ Community Edition, it will quickly make you productive with C++ even if you’ve never written a line of code!
Brian Overland has earned rave reviews for this book’s approach to teaching C++. He starts with short, simple examples you can easily enter and run. Within a couple of chapters, you’ll be creating useful utilities, playing games, and solving puzzles. Everything’s simplified to its essentials, patiently explained, and clearly illustrated with practical examples and exercises that help you make progress quickly.
Overland reveals the “whys” and “tricks” behind each C++ language feature. And you’ll never get bogged down in complex or pointless examples: He keeps you 100% focused on learning what works and what matters—while having fun!
This new and improved edition
Whether you want to learn C++ programming for pleasure or you’re considering a career in programming, this book is an outstanding choice.
Preface xxiii
Acknowledgments xxix
About the Author xxxi
Chapter 1: Start Using C++ 1
Install Microsoft Visual Studio 1
Create a Project with Microsoft 2
Writing a Program in Microsoft Visual Studio 5
Running a Program in Visual Studio 5
Compatibility Issue #1: stdafx.h 6
Compatibility Issue #2: Pausing the Screen 8
If You’re Not Using Microsoft 8
Advancing to the Next Print Line 12
Storing Data: C++ Variables 16
Introduction to Data Types 17
A Word about Variable Names and Keywords 26
Chapter 1 Summary 27
Chapter 2: Decisions, Decisions 29
But First, a Few Words about Data Types 29
Decision Making in Programs 31
Introducing Loops 39
True and False in C++ 46
The Increment Operator (++) 48
Statements versus Expressions 49
Introducing Boolean (Short-Circuit) Logic 51
Introducing the Math Library 55
Chapter 2 Summary 62
Chapter 3: And Even More Decisions! 65
The do-while Loop 65
Introducing Random Numbers 69
The switch-case Statement 77
Chapter 3 Summary 83
Chapter 4: The Handy, All-Purpose “for” Statement 85
Loops Used for Counting 85
Introducing the “for” Loop 86
A Wealth of Examples 88
Declaring Loop Variables “On the Fly” 92
Comparative Languages 101: The Basic “For” Statement 96
Chapter 4 Summary 97
Chapter 5: Functions: Many Are Called 99
The Concept of Function 99
The Basics of Using Functions 101
Local and Global Variables 109
Recursive Functions 112
Games and More Games 129
Chapter 5 Summary 131
Chapter 6: Arrays: All in a Row... 133
A First Look at C++ Arrays 133
Initializing Arrays 135
Zero-Based Indexing 135
Strings and Arrays of Strings 144
2-D Arrays: Into the Matrix 152
Chapter 6 Summary 153
Chapter 7: Pointers: Data by Location 155
What the Heck Is a Pointer, Anyway? 155
The Concept of Pointer 156
Declaring and Using Pointers 158
Data Flow in Functions 165
Swap: Another Function Using Pointers 165
Reference Arguments (&) 172
Pointer Arithmetic 173
Pointers and Array Processing 175
Chapter 7 Summary 180
Chapter 8: Strings: Analyzing the Text 181
Text Storage on the Computer 181
It Don’t Mean a Thing if It Ain’t Got that String 183
String-Manipulation Functions 184
Reading String Input 190
Individual Characters versus Strings 197
The C++ String Class 201
Other Operations on the string Type 209
Chapter 8 Summary 210
Chapter 9: Files: Electronic Storage 213
Introducing File—Stream Objects 213
Text Files versus “Binary” Files 222
Introducing Binary Operations 225
Chapter 9 Summary 233
Chapter 10: Classes and Objects 237
OOP, My Code Is Showing 237
What’s an Object, Anyway? 238
Point: A Simple Class 241
Private: Members Only (Protecting the Data) 243
Introducing the Fraction Class 248
Inline Functions 251
Find the Greatest Common Factor 253
Find the Lowest Common Denominator 254
Chapter 10 Summary 267
Chapter 11: Constructors: If You Build It… 269
Introducing Constructors 269
Multiple Constructors (Overloading) 270
C++11/C++14 Only: Initializing Members 271
The Default Constructor—and a Warning 272
C++11/C++14 Only: Delegating Constructors 274
Reference Variables and Arguments (&) 281
The Copy Constructor 282
A Constructor from String to Fract 285
Chapter 11 Summary 286
Chapter 12: Two Complete OOP Examples 289
Dynamic Object Creation 289
Other Uses of new and delete 290
Blowin’ in the Wind: A Binary Tree App 291
The Bnode Class 294
The Btree Class 296
Tower of Hanoi, Animated 302
Chapter 12 Summary 311
Chapter 13: Easy Programming with STL 313
Introducing the List Template 313
Designing an RPN Calculator 323
Correct Interpretation of Angle Brackets 333
Chapter 13 Summary 333
Chapter 14: Object-Oriented Monty Hall 335
What’s the Deal? 335
TV Programming: “Good Deal, Bad Deal” 337
The Monty Hall Paradox, or What’s Behind the Door? 351
Improving the Prize Manager 353
Chapter 14 Summary 356
Chapter 15: Object-Oriented Poker 359
Winning in Vegas 359
How to Draw Cards 361
The Card Class 363
The Deck Class 364
Doing the Job with Algorithms 366
The Vector Template 371
Getting Nums from the Player 372
How to Evaluate Poker Hands 378
Chapter 15 Summary 387
Chapter 16: Polymorphic Poker 389
Multiple Decks 389
Switching Decks at Runtime 391
Polymorphism Is the Answer 392
“Pure Virtual” and Other Abstract Matters 401
Abstract Classes and Interfaces 402
Object Orientation and I/O 403
A Final Word (or Two) 410
An (Even More) Final Word 411
Chapter 16 Summary 412
Chapter 17: New Features of C++14 415
The Newest C++14 Features 415
Features Introduced in C++11 422
The long long Type 422
Range-Based “for” (For Each) 433
The auto and decltype Keywords 438
The nullptr Keyword 439
Strongly Typed Enumerations 440
Raw-String Literals 443
Chapter 17 Summary 444
Chapter 18: Operator Functions: Doing It with Class 447
Introducing Operator Functions 447
Operator Functions as Global Functions 450
Improve Efficiency with References 452
Working with Other Types 463
The Class Assignment Function (=) 463
The Test-for-Equality Function (==) 465
A Class “Print” Function 466
A Really Final Word (about Ops) 471
Chapter 18 Summary 472
Appendix A: Operators 475
The Scope (::) Operator 478
The sizeof Operator 478
Old- and New-Style Type Casts 479
Integer versus Floating-Point Division 480
Bitwise Operators (&, |, ^, ~, <<, and >>) 480
Conditional Operator 481
Assignment Operators 482
Join (,) Operator 482
Appendix B: Data Types 483
Precision of Data Types 484
Data Types of Numeric Literals 485
String Literals and Escape Sequences 486
Two’s-Complement Format for Signed Integers 487
Appendix C: Syntax Summary 491
Basic Expression Syntax 491
Basic Statement Syntax 492
Control Structures and Branch Statements 493
Variable Declarations 498
Function Declarations 500
Class Declarations 502
Enum Declarations 503
Appendix D: Preprocessor Directives 505
The #define Directive 505
The ## Operator (Concatenation) 507
The defined Function 507
The #elif Directive 507
The #endif Directive 508
The #error Directive 508
The #if Directive 508
The #ifdef Directive 509
The #ifndef Directive 510
The #include Directive 510
The #line Directive 511
The #undef Directive 511
Predefined Constants 512
Appendix E: ASCII Codes 513
Appendix F: Standard Library Functions 517
String (C-String) Functions 517
Data-Conversion Functions 518
Single-Character Functions 519
Math Functions 520
Randomization Functions 521
Time Functions 521
Formats for the strftime Function 523
Appendix G: I/O Stream Objects and Classes 525
Console Stream Objects 525
I/O Stream Manipulators 526
Input Stream Functions 528
Output Stream Functions 528
File I/O Functions 529
Appendix H: STL Classes and Objects 531
The STL String Class 531
The <bitset> Template 533
The <list> Template 534
The <vector> Template 536
The <stack> Template 538
Appendix I: Glossary of Terms 541
Index 559