推荐星级:
- 1
- 2
- 3
- 4
- 5
C++ Primer Plus (5th.Edition)完整英文版
资料介绍
部分文件列表
文件名 | 大小 |
C++_Primer_Plus_(5th.Edition).pdf | 6M |
部分页面预览
(完整内容请下载后查看)C++
Primer Plus
Fifth Edition
Stephen Prata
800 East 96th St., Indianapolis, Indiana, 46240 USA
ASSOCIATE PUBLISHER
Michael Stephens
C++ Primer Plus
Copyright © 2005 by Sams Publishing
ACQUISITIONS EDITOR
Loretta Yates
All rights reserved. No part of this book shall be reproduced, stored in a retrieval system,
or transmitted by any means, electronic, mechanical, photocopying, recording, or otherwise,
without written permission from the publisher. No patent liability is assumed with respect
to the use of the information contained herein. Although every precaution has been taken
in the preparation of this book, the publisher and author assume no responsibility for errors
or omissions. Nor is any liability assumed for damages resulting from the use of the infor-
mation contained herein.
DEVELOPMENT EDITOR
Songlin Qiu
MANAGING EDITOR
Charlotte Clapp
PROJECT EDITOR
George E. Nedeff
International Standard Book Number: 0-672-32697-3
Library of Congress Catalog Card Number: 2004095067
Printed in the United States of America
COPY EDITOR
Kitty Jarrett
First Printing: November, 2004
INDEXER
Erika Millen
07 06 05 04
4
3
2
1
PROOFREADER
Suzanne Thomas
Trademarks
TECHNICAL EDITOR
David Horvath
All terms mentioned in this book that are known to be trademarks or service marks have
been appropriately capitalized. Sams Publishing cannot attest to the accuracy of this infor-
mation. Use of a term in this book should not be regarded as affecting the validity of any
trademark or service mark.
PUBLISHING
COORDINATOR
Cindy Teeters
MULTIMEDIA DEVELOPER
Warning and Disclaimer
Dan Scherf
Every effort has been made to make this book as complete and as accurate as possible, but
no warranty or fitness is implied. The information provided is on an “as is” basis.
BOOK DESIGNER
Gary Adair
Bulk Sales
Sams Publishing offers excellent discounts on this book when ordered in quantity for bulk
purchases or special sales. For more information, please contact
U.S. Corporate and Government Sales
1-800-382-3419
For sales outside of the U.S., please contact
International Sales
1-317-428-3341
CONTENTS AT A GLANCE
INTRODUCTION
1
CHAPTER 1
CHAPTER 2
CHAPTER 3
CHAPTER 4
CHAPTER 5
CHAPTER 6
CHAPTER 7
CHAPTER 8
CHAPTER 9
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
Setting Out to C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
Dealing with Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
Compound Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
Loops and Relational Expressions . . . . . . . . . . . . . . . . . . . . . . . .177
Branching Statements and Logical Operators . . . . . . . . . . . . . . .231
Functions: C++’s Programming Modules . . . . . . . . . . . . . . . . . . .279
Adventures in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
Memory Models and Namespaces . . . . . . . . . . . . . . . . . . . . . . . .393
CHAPTER 10 Objects and Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .445
CHAPTER 11 Working with Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .501
CHAPTER 12 Classes and Dynamic Memory Allocation . . . . . . . . . . . . . . . . . .561
CHAPTER 13 Class Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .633
CHAPTER 14 Reusing Code in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .701
CHAPTER 15 Friends, Exceptions, and More . . . . . . . . . . . . . . . . . . . . . . . . . .787
CHAPTER 16 The stringClass and the Standard Template Library . . . . . . . . .857
CHAPTER 17 Input, Output, and Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .951
APPENDIX A Number Bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1041
APPENDIX B C++ Reserved Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1047
APPENDIX C The ASCII Character Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1051
APPENDIX D Operator Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1057
APPENDIX E Other Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1063
APPENDIX F The stringTemplate Class . . . . . . . . . . . . . . . . . . . . . . . . . . . .1075
APPENDIX G The STL Methods and Functions . . . . . . . . . . . . . . . . . . . . . . .1095
APPENDIX H Selected Readings and Internet Resources . . . . . . . . . . . . . . . . .1129
APPENDIX I Converting to ANSI/ISO Standard C++ . . . . . . . . . . . . . . . . . . .1133
APPENDIX J Answers to Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . .1141
INDEX
1165
TABLE OF CONTENTS
INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
CHAPTER 1: Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
Learning C++: What Lies Before You . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
The Origins of C++: A Little History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
The C Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
C Programming Philosophy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
The C++ Shift: Object-Oriented Programming . . . . . . . . . . . . . . . . . . . . . .14
C++ and Generic Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
The Genesis of C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
Portability and Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
The Mechanics of Creating a Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19
Creating the Source Code File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
Compilation and Linking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
CHAPTER 2: Setting Out to C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
C++ Initiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
The main()Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
C++ Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
The C++ Preprocessor and the iostreamFile . . . . . . . . . . . . . . . . . . . . . . .35
Header Filenames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
C++ Output with cout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
C++ Source Code Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
C++ Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Declaration Statements and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Assignment Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
A New Trick for cout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
More C++ Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
Using cin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
Concatenating with cout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
cinand cout: A Touch of Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50
Using a Function That Has a Return Value . . . . . . . . . . . . . . . . . . . . . . . . .50
Function Variations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54
User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Using a User-Defined Function That Has a Return Value . . . . . . . . . . . . . . .58
Placing the usingDirective in Multifunction Programs . . . . . . . . . . . . . . . .60
vi
C++ PRIMER PLUS, FIFTH EDITION
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
Programming Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
CHAPTER 3: Dealing with Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
Simple Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
Names for Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
Integer Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
The short, int, and longInteger Types . . . . . . . . . . . . . . . . . . . . . . . . . . .68
Unsigned Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
Choosing an Integer Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
Integer Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
How C++ Decides What Type a Constant Is . . . . . . . . . . . . . . . . . . . . . . . .78
The charType: Characters and Small Integers . . . . . . . . . . . . . . . . . . . . . .79
The boolType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
The constQualifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
Floating-Point Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
Writing Floating-Point Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
Floating-Point Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91
Floating-Point Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
Advantages and Disadvantages of Floating-Point Numbers . . . . . . . . . . . . .94
C++ Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Order of Operation: Operator Precedence and Associativity . . . . . . . . . . . .96
Division Diversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97
The Modulus Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
Type Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106
Programming Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107
CHAPTER 4: Compound Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
Introducing Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
Program Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
Initialization Rules for Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
Concatenating String Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Using Strings in an Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Adventures in String Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Reading String Input a Line at a Time . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
Mixing String and Numeric Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124
CONTENTS
vii
Introducing the stringClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125
Assignment, Concatenation, and Appending . . . . . . . . . . . . . . . . . . . . . . .126
More stringClass Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127
More on stringClass I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129
Introducing Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
Using a Structure in a Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Can a Structure Use a stringClass Member? . . . . . . . . . . . . . . . . . . . . . .135
Other Structure Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136
Arrays of Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137
Bit Fields in Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Unions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
Setting Enumerator Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142
Value Ranges for Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
Pointers and the Free Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
Declaring and Initializing Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147
Pointer Danger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149
Pointers and Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150
Allocating Memory with new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150
Freeing Memory with delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152
Using newto Create Dynamic Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153
Pointers, Arrays, and Pointer Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
Program Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157
Pointers and Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162
Using newto Create Dynamic Structures . . . . . . . . . . . . . . . . . . . . . . . . . .166
Automatic Storage, Static Storage, and Dynamic Storage . . . . . . . . . . . . . .170
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173
Programming Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .174
CHAPTER 5: Loops and Relational Expressions . . . . . . . . . . . . . . . . . . . . . . . . .177
Introducing forLoops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178
forLoop Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
Back to the forLoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185
Changing the Step Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187
Inside Strings with the forLoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188
The Increment (++) and Decrement (--) Operators . . . . . . . . . . . . . . . . . .189
Side Effects and Sequence Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190
Prefixing Versus Postfixing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191
The Increment/Decrement Operators and Pointers . . . . . . . . . . . . . . . . . .191
Combination Assignment Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192
viii
C++ PRIMER PLUS, FIFTH EDITION
Compound Statements, or Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
The Comma Operator (or More Syntax Tricks) . . . . . . . . . . . . . . . . . . . . .195
Relational Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198
A Mistake You’ll Probably Make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199
Comparing C-Style Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201
Comparing stringClass Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
The whileLoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205
Program Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207
forVersus while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207
Just a Moment—Building a Time-Delay Loop . . . . . . . . . . . . . . . . . . . . . .209
The do whileLoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
Loops and Text Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213
Using Unadorned cinfor Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
cin.get(char)to the Rescue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215
Which cin.get()? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216
The End-of-File Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217
Yet Another Version of cin.get(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Nested Loops and Two-Dimensional Arrays . . . . . . . . . . . . . . . . . . . . . . . . . .223
Initializing a Two-Dimensional Array . . . . . . . . . . . . . . . . . . . . . . . . . . . .225
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228
Programming Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229
CHAPTER 6: Branching Statements and Logical Operators . . . . . . . . . . . . . . . . .231
The ifStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231
The if elseStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233
Formatting if elseStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235
The if else if elseConstruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Logical Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
The Logical OR Operator: || . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
The Logical AND Operator: && . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239
The Logical NOT Operator: ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244
Logical Operator Facts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
Alternative Representations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .247
The cctypeLibrary of Character Functions . . . . . . . . . . . . . . . . . . . . . . . . . .247
The ?: Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .250
The switchStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
Using Enumerators as Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
switchand if else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
The breakand continueStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
Program Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258
CONTENTS
ix
Number-Reading Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .259
Program Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
Simple File Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
Text I/O and Text Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263
Writing to a Text File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264
Reading from a Text File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274
Programming Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276
CHAPTER 7: Functions: C++’s Programming Modules . . . . . . . . . . . . . . . . . . . .279
Function Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280
Defining a Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281
Prototyping and Calling a Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283
Function Arguments and Passing by Value . . . . . . . . . . . . . . . . . . . . . . . . . .286
Multiple Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288
Another Two-Argument Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .290
Functions and Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .293
How Pointers Enable Array-Processing Functions . . . . . . . . . . . . . . . . . . .294
The Implications of Using Arrays as Arguments . . . . . . . . . . . . . . . . . . . .295
More Array Function Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297
Functions Using Array Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
Pointers and const . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305
Functions and Two-Dimensional Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . .308
Functions and C-Style Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309
Functions with C-Style String Arguments . . . . . . . . . . . . . . . . . . . . . . . . .310
Functions That Return C-Style Strings . . . . . . . . . . . . . . . . . . . . . . . . . . .312
Functions and Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313
Passing and Returning Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .314
Another Example of Using Functions with Structures . . . . . . . . . . . . . . . .316
Passing Structure Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .320
Functions and stringClass Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322
Recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324
Recursion with a Single Recursive Call . . . . . . . . . . . . . . . . . . . . . . . . . . .324
Recursion with Multiple Recursive Calls . . . . . . . . . . . . . . . . . . . . . . . . . .326
Pointers to Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .327
Function Pointer Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328
A Function Pointer Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
Programming Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .334
全部评论(0)