Table Of Content01 568523 FM.qxd 4/5/04 2:00 PM Page i
C++
FOR
DUMmIES
‰
5
TH EDITION
by Stephen Randy Davis
01 568523 FM.qxd 4/5/04 2:00 PM Page i
01 568523 FM.qxd 4/5/04 2:00 PM Page i
C++
FOR
DUMmIES
‰
5
TH EDITION
by Stephen Randy Davis
01 568523 FM.qxd 4/5/04 2:00 PM Page ii
C++ For Dummies®, 5th Edition
Published by
Wiley Publishing, Inc.
111 River Street
Hoboken, NJ 07030-5774
Copyright © 2004 by Wiley Publishing, Inc., Indianapolis, Indiana
Published by Wiley Publishing, Inc., Indianapolis, Indiana
Published simultaneously in Canada
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form
or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as
permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior
written permission of the Publisher, or authorization through payment of the appropriate per-copy
fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax
(978) 646-8600. Requests to the Publisher for permission should be addressed to the Legal Department,
Wiley Publishing, Inc., 10475 Crosspoint Blvd., Indianapolis, IN 46256, (317) 572-3447, fax (317) 572-4447,
e-mail: permcoordinator@wiley.com.
Trademarks: Wiley, the Wiley Publishing logo, For Dummies, the Dummies Man logo, A Reference for the
Rest of Us!, The Dummies Way, Dummies Daily, The Fun and Easy Way, Dummies.com, and related trade
dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates in the United
States and other countries, and may not be used without written permission. All other trademarks are the
property of their respective owners. Wiley Publishing, Inc., is not associated with any product or vendor
mentioned in this book.
LIMIT OF LIABILITY/DISCLAIMER OF WARRANTY: THE PUBLISHER AND THE AUTHOR MAKE NO REP
RESENTATIONS OR WARRANTIES WITH RESPECT TO THE ACCURACY OR COMPLETENESS OF THE
CONTENTS OF THIS WORK AND SPECIFICALLY DISCLAIM ALL WARRANTIES, INCLUDING WITHOUT
LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE. NO WARRANTY MAY BE CRE
ATED OR EXTENDED BY SALES OR PROMOTIONAL MATERIALS. THE ADVICE AND STRATEGIES CON
TAINED HEREIN MAY NOT BE SUITABLE FOR EVERY SITUATION. THIS WORK IS SOLD WITH THE
UNDERSTANDING THAT THE PUBLISHER IS NOT ENGAGED IN RENDERING LEGAL, ACCOUNTING, OR
OTHER PROFESSIONAL SERVICES. IF PROFESSIONAL ASSISTANCE IS REQUIRED, THE SERVICES OF A
COMPETENT PROFESSIONAL PERSON SHOULD BE SOUGHT. NEITHER THE PUBLISHER NOR THE
AUTHOR SHALL BE LIABLE FOR DAMAGES ARISING HEREFROM. THE FACT THAT AN ORGANIZATION
OR WEBSITE IS REFERRED TO IN THIS WORK AS A CITATION AND/OR A POTENTIAL SOURCE OF FUR
THER INFORMATION DOES NOT MEAN THAT THE AUTHOR OR THE PUBLISHER ENDORSES THE INFOR
MATION THE ORGANIZATION OR WEBSITE MAY PROVIDE OR RECOMMENDATIONS IT MAY MAKE.
FURTHER, READERS SHOULD BE AWARE THAT INTERNET WEBSITES LISTED IN THIS WORK MAY HAVE
CHANGED OR DISAPPEARED BETWEEN WHEN THIS WORK WAS WRITTEN AND WHEN IT IS READ.
For general information on our other products and services or to obtain technical support, please contact
our Customer Care Department within the U.S. at 800-762-2974, outside the U.S. at 317-572-3993, or fax
317-572-4002.
Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may
not be available in electronic books.
Library of Congress Control Number: 2004102365
ISBN: 0-7645-6852-3
Manufactured in the United States of America
10 9 8 7 6 5 4 3 2 1
5B/SW/QU/QU/IN
01 568523 FM.qxd 4/5/04 2:00 PM Page iii
About the Author
Stephen R. Davis lives with his wife and son near Dallas, Texas. He and
his family have written numerous books including C++ For Dummies and
C++ Weekend Crash Course. Stephen works for L-3 Communications.
Dedication
To my friends and family, who help me be the best Dummy I can be.
Author’s Acknowledgments
I find it very strange that only a single name appears on the cover of any
book, but especially a book like this. In reality, many people contribute to
the creation of a For Dummies book. From the beginning, editorial director
Mary Corder and my agent, Claudette Moore, were involved in guiding and
molding the book’s content. During the development of the five editions of
this book, I found myself hip-deep in edits, corrections, and suggestions from
a group of project editors, copyeditors, and technical reviewers — this book
would have been a poorer work but for their involvement. And nothing would
have made it into print without the aid of the person who coordinated the
first and second editions of the project, Suzanne Thomas. Nevertheless, one
name does appear on the cover and that name must take responsibility for
any inaccuracies in the text.
I also have to thank my wife, Jenny, and son, Kinsey, for their patience and
devotion. I hope we manage to strike a reasonable balance.
Finally, a summary of the animal activity around my house. For those of you
who have not read any of my other books, I should warn you that this has
become a regular feature of my For Dummies books.
My two dogs, Scooter and Trude, continue to do well, although Trude is all
but blind now. Our two mini-Rex rabbits, Beavis and Butt-head, passed on to
the big meadow in the sky after living in our front yard for almost a year and
a half.
If you would like to contact me concerning C++ programming, semi-blind dogs,
or free-roaming rabbits, feel free to drop me a line at srdavis@acm.org.
01 568523 FM.qxd 4/5/04 2:00 PM Page iv
Publisher’s Acknowledgments
We’re proud of this book; please send us your comments through our online registration form
located at www.dummies.com/register/.
Some of the people who helped bring this book to market include the following:
Acquisitions, Editorial, and Production
Media Development
Project Coordinator: Adrienne Martinez
Project Editor: Linda Morris
Layout and Graphics: Amanda Carter,
Acquisitions Editor: Katie Feltman Andrea Dahl, Denny Hager, Michael Kruzil,
Lynsey Osborn, Jacque Schneider
Copy Editor: Melba Hopper
Proofreaders: Andy Hollandbeck, Carl Pierce,
Technical Editor: Wiley-Dreamtech India Pvt Ltd
Dwight Ramsey, TECHBOOKS Production
Editorial Manager: Leah Cameron Services
Permissions Editor: Laura Moss Indexer: TECHBOOKS Production Services
Media Development Specialist: Travis Silvers Special Help:
Media Development Manager: Barry Childs-Helton
Laura VanWinkle
Media Development Supervisor:
Richard Graves
Editorial Assistant: Amanda Foxworth
Cartoons: Rich Tennant, www.the5thwave.com
Publishing and Editorial for Technology Dummies
Richard Swadley, Vice President and Executive Group Publisher
Andy Cummings, Vice President and Publisher
Mary C. Corder, Editorial Director
Publishing for Consumer Dummies
Diane Graves Steele, Vice President and Publisher
Joyce Pepple, Acquisitions Director
Composition Services
Gerry Fahey, Vice President of Production Services
Debbie Stailey, Director of Composition Services
01 568523 FM.qxd 4/5/04 2:00 PM Page v
Table of Contents
Introduction ..................................................................1
What’s in This Book .........................................................................................1
What’s on the CD..............................................................................................2
What Is C++?......................................................................................................2
Conventions Used in This Book .....................................................................2
How This Book Is Organized...........................................................................3
And There’s More.............................................................................................4
Part I: Introduction to C++ Programming ......................................................4
Part II: Becoming a Functional C++ Programmer .........................................4
Part III: Introduction to Classes......................................................................5
Part IV: Inheritance ..........................................................................................5
Part V: Optional Features ................................................................................5
Part VI: The Part of Tens .................................................................................5
Icons Used in This Book..................................................................................6
Where to Go from Here....................................................................................6
Part I: Introduction to C++ Programming ........................7
Chapter 1: Writing Your First C++ Program . . . . . . . . . . . . . . . . . . . . . . . .9
Grasping C++ Concepts .................................................................................10
What’s a program?................................................................................10
How do I program? ...............................................................................11
Installing Dev-C++...........................................................................................12
Setting the options ...............................................................................15
Creating Your First C++ Program..................................................................16
Entering the C++ code..........................................................................17
Building your program.........................................................................18
Executing Your Program................................................................................20
Dev-C++ is not Windows ......................................................................21
Dev-C++ help .........................................................................................21
Reviewing the Annotated Program ..............................................................21
Examining the framework for all C++ programs ...............................22
Clarifying source code with comments .............................................22
Basing programs on C++ statements .................................................23
Writing declarations.............................................................................24
Generating output ................................................................................25
01 568523 FM.qxd 4/5/04 2:00 PM Page vi
vi
C++ For Dummies, 5th Edition
Calculating Expressions ................................................................................25
Storing the results of expression........................................................26
Examining the remainder of Conversion.cpp ...................................26
Chapter 2: Declaring Variables Constantly . . . . . . . . . . . . . . . . . . . . . . .27
Declaring Variables ........................................................................................27
Declaring Different Types of Variables ........................................................28
Reviewing the limitations of integers in C++.....................................29
Solving the truncation problem..........................................................30
Looking at the limits of floating-point numbers ...............................31
Declaring Variable Types...............................................................................33
Types of constants ...............................................................................34
Special characters ................................................................................35
Are These Calculations Really Logical?.......................................................36
Mixed Mode Expressions ..............................................................................36
Chapter 3: Performing Mathematical Operations . . . . . . . . . . . . . . . . .39
Performing Simple Binary Arithmetic .........................................................40
Decomposing Expressions ............................................................................41
Determining the Order of Operations .........................................................42
Performing Unary Operations ......................................................................43
Using Assignment Operators........................................................................45
Chapter 4: Performing Logical Operations . . . . . . . . . . . . . . . . . . . . . . .47
Why Mess with Logical Operations?............................................................47
Using the Simple Logical Operators ............................................................48
Storing logical values ...........................................................................49
Using logical int variables ...................................................................51
Be careful performing logical operations
on floating-point variables...............................................................51
Expressing Binary Numbers .........................................................................53
The decimal number system ..............................................................54
Other number systems ........................................................................54
The binary number system.................................................................54
Performing Bitwise Logical Operations.......................................................56
The single bit operators ......................................................................57
Using the bitwise operators ................................................................58
A simple test.........................................................................................59
Do something logical with logical calculations ................................60
Chapter 5: Controlling Program Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
Controlling Program Flow with the Branch Commands ...........................61
Executing Loops in a Program......................................................................63
Looping while a condition is true.......................................................64
Using the autoincrement/autodecrement feature............................65
Using the for loop.................................................................................67
01 568523 FM.qxd 4/5/04 2:00 PM Page vii
vii
Table of Contents
Avoiding the dreaded infinite loop.....................................................69
Applying special loop controls ...........................................................70
Nesting Control Commands..........................................................................73
Switching to a Different Subject? .................................................................74
Part II: Becoming a Functional C++ Programmer...........77
Chapter 6: Creating Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Writing and Using a Function .......................................................................79
Defining the sumSequence( ) function...............................................81
Calling the function sumSequence( ) .................................................82
Divide and conquer ..............................................................................82
Understanding the Details of Functions......................................................83
Understanding simple functions ........................................................84
Understanding functions with arguments.........................................85
Overloading Function Names .......................................................................87
Defining Function Prototypes.......................................................................89
Variable Storage Types ..................................................................................91
Including Include Files...................................................................................91
Chapter 7: Storing Sequences in Arrays . . . . . . . . . . . . . . . . . . . . . . . . .93
Considering the Need for Arrays .................................................................93
Using an array .......................................................................................95
Initializing an array...............................................................................98
Accessing too far into an array...........................................................99
Using arrays ..........................................................................................99
Defining and using arrays of arrays .................................................100
Using Arrays of Characters.........................................................................100
Creating an array of characters........................................................100
Creating a string of characters .........................................................101
Manipulating Strings with Character.........................................................103
String-ing Along Variables ...........................................................................106
Chapter 8: Taking a First Look at C++ Pointers . . . . . . . . . . . . . . . . . .109
Variable Size..................................................................................................109
What’s in an Address? .................................................................................110
Address Operators.......................................................................................111
Using Pointer Variables ...............................................................................112
Comparing pointers and houses ......................................................114
Using different types of pointers......................................................114
Passing Pointers to Functions ....................................................................117
Passing by value .................................................................................117
Passing pointer values.......................................................................118
Passing by reference ..........................................................................119
Description:Mary C. Corder, Editorial Director. Publishing for Consumer Dummies. Diane
Graves Steele, Vice President and Publisher. Joyce Pepple, Acquisitions Director
.