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 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: [email protected]. 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 [email protected]. 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