C++ Primer, Fifth Edition
C++ Primer, Fifth Edition
Stanley
B. Lippman
Josée Lajoie
Barbara E. Moo
Upper Saddle River, NJ • Boston • Indianapolis • San Francisco
New York • Toronto • Montreal • London • Munich • Paris • Madrid
Capetown • Sidney • Tokyo • Singapore • Mexico City
Many of the designations used by manufacturers and sellers to distinguish their
products are claimed as trademarks. Where those designations appear in this book,
and the publisher was aware of a trademark claim, the designations have been printed
with initial capital letters or in all capitals.
The
authors and publisher have taken care in the preparation of this book, but make
no expressed or implied warranty of any kind and assume no responsibility for errors
or omissions. No liability is assumed for incidental or consequential damages in
connection with or arising out of the use of the information or programs contained
herein.
The
publisher offers excellent discounts on this book when ordered in quantity for bulk
purchases or special sales, which may include electronic versions and/or custom covers
and content particular to your business, training goals, marketing focus, and branding
interests. For more information, please contact:
U.
S. Corporate and Government Sales
(800) 382-3419
corpsales@pearsontechgroup.com
For
sales outside the U. S., please contact:
C++ Primer, Fifth Edition
International Sales
international@pearsoned.com
Visit
us on the Web: informit.com/aw
Library of Congress Cataloging-in-Publication Data
Lippman,
Stanley B.
C++
primer / Stanley B. Lippman, Josée Lajoie, Barbara E. Moo. – 5th ed.
p. cm.
Includes index.
ISBN
0-321-71411-3 (pbk. : alk. paper) 1. C++ (Computer program language) I.
Lajoie, Josée. II.
Moo, Barbara E. III. Title.
QA76.73.C153L57697 2013
005.13'3–
dc23
2012020184
Copyright © 2013 Objectwrite Inc., Josée Lajoie and Barbara E. Moo
All
rights reserved. Printed in the United States of America. This publication is
protected by copyright, and permission must be obtained from the publisher prior to
any prohibited reproduction, storage in a retrieval system, or transmission in any form
or by any means, electronic, mechanical, photocopying, recording, or likewise. To
obtain permission to use material from this work, please submit a written request to
Pearson Education, Inc., Permissions Department, One Lake Street, Upper Saddle
River, New Jersey 07458, or you may fax your request to (201) 236-3290.
ISBN
-13: 978-0-321-71411-4
ISBN-10:
0
-321-71411-3
Text
printed in the United States on recycled paper at Courier in Westford,
Massachusetts.
First
printing, August 2012
To Beth, who makes this, and all things, possible.
——
To Daniel and Anna, who contain virtually all possibilities.
—SBL
To Mark and Mom, for their unconditional love and support.
C++ Primer, Fifth Edition
—JL
To Andy, who taught me to program and so much more.
—BEM
Contents
Preface
Chapter 1 Getting Started
1.1
Writing a Simple C++ Program
1.1.1
Compiling and Executing Our Program
1.2
A First Look at Input/Output
1.3
A Word about Comments
1.4
Flow of Control
1.4.1
The while Statement
1.4.2
The for Statement
1.4.3
Reading an Unknown Number of Inputs
1.4.4 The if Statement
1.5 Introducing Classes
1.5.1 The Sales_item Class
1.5.2 A First Look at Member Functions
1.6
The Bookstore Program
Chapter
Summary
Defined
Terms
Part
I The Basics
Chapter
2 Variables and Basic Types
2.1 Primitive Built-in Types
2.1.1 Arithmetic Types
2.1.2 Type Conversions
2.1.3
Literals
2.2
Variables
C++ Primer, Fifth Edition
2.2.1 Variable Definitions
2.2.2 Variable Declarations and Definitions
2.2.3
Identifiers
2.2.4
Scope of a Name
2.3
Compound Types
2.3.1
References
2.3.2
Pointers
2.3.3
Understanding Compound Type Declarations
2.4
const Qualifier
2.4.1
References to const
2.4.2
Pointers and const
2.4.3
Top-Level const
2.4.4
constexpr and Constant Expressions
2.5
Dealing with Types
2.5.1 Type Aliases
2.5.2 The auto Type Specifier
2.5.3 The decltype Type Specifier
2.6 Defining Our Own Data Structures
2.6.1
Defining the Sales_data Type
2.6.2
Using the Sales_data Class
2.6.3
Writing Our Own Header Files
Chapter
Summary
Defined
Terms
Chapter
3 Strings, Vectors, and Arrays
3.1
Namespace using Declarations
3.2 Library string Type
3.2.1 Defining and Initializing strings
3.2.2 Operations on strings
3.2.3 Dealing with the Characters in a string
3.3
Library vector Type
3.3.1
Defining and Initializing vectors
3.3.2
Adding Elements to a
vector