Winner,
Software Development Magazine’s
1996 Jolt Award for Best Book of
the Year
“This book is a tremendous
achievement. You owe it to yourself to have a copy on your shelf. The chapter on
iostreams is the most comprehensive and understandable treatment of that subject
I’ve seen to date.”
“Eckel’s book is the only one
to so clearly explain how to rethink program construction for object
orientation. That the book is also an excellent tutorial on the ins and outs of
C++ is an added bonus.”
“Bruce continues to amaze me with
his insight into C++, and Thinking in C++ is his best collection of ideas
yet. If you want clear answers to difficult questions about C++, buy this
outstanding book.”
“Thinking in C++ patiently
and methodically explores the issues of when and how to use inlines, references,
operator overloading, inheritance and dynamic objects, as well as advanced
topics such as the proper use of templates, exceptions and multiple inheritance.
The entire effort is woven in a fabric that includes Eckel’s own
philosophy of object and program design. A must for every C++ developer’s
bookshelf, Thinking in C++ is the one C++ book you must have if
you’re doing serious development with C++.”
Comments from Readers:
Wonderful book ... Great stuff!
Andrew Schulman, Doctor Dobbs
Journal
An absolute, unqualified must. One of the
most-used, most trusted books on my shelf.”
TUG Lines
This is stuff a programmer can really
use. IEEE Computer
A refreshing departure.
PJ Plauger,
Embedded Systems Programming
magazine
...Eckel succeeds ... it’s so
readable. Unix World
Should definitely be your first buy.
C Gazette
A fantastic reference for
C++! Michael Brandt, Senior Analyst/Programmer,
Sydney, Australia
On our project at HRB Systems we call
your book “The Answer Book”. It is our C++ Bible for the
project. Curt Snyder, HRB
Systems
Your book is really great, and I
can’t thank you enough for making it available for free on the web.
It’s one of the most thorough and useful references for C++ I’ve
seen. Russell Davis
... the only book out there that even
comes close to being actually readable when trying to learn the ropes of C++
(and the basics of good object oriented programming in general).
Gunther Schulz, KawaiiSoft
I love the examples in your book.
There’s stuff there that I never would have thought of (and some things
that I didn’t know you could do)! Rich
Herrick, Senior Associate Software Engineer, Lockheed-Martin Federal Systems,
Owego, NY
It’s an amazing book. Any
questions I have I refer to this online book. Helped in every case. I’m
simply happy to have access to a book of this caliber.
Wes Kells, Comp Eng. Student, SLC
Kingston.
You are an invaluable resource and I
greatly appreciate your books, email list etc... It seems every project I have
worked on has been successful because of your insights.
Justin Voshell
This is the book I have been looking for
on C++. Thomas A. Fink, Managing Director, Trepp,
LLC
When I first started learning C++, your
book “Thinking in C++” was my shining guide light in a dark
tunnel. It has been my endeavor to improve my C++ skills whenever
possible, and to that effect, “Thinking in C++” has given me the
strong foundation for my continuous improvement.
Peter Tran, Senior Systems Analyst (IM), Compaq
Computer Corporation
This book is the best general reference
in my on-going quest to master C++. Most books explain some topics thoroughly
but are deficient in others. “Thinking in C++” 2/E does not pass the
buck to another book. When I have questions it has answers.
Thomas Michel
I have a whole mountain of books and none
of them make sense nor do they explain things properly. I have been dying for a
good template and STL book. Then I decided to read your material and I was
amazed. What you did was show how to write C++ with templates and STL without
bogging down with details. What you did was what I expected of the C++
community, the next generation of C++ authors. As an author I AM IMPRESSED at
your writing and explanation skills. You covered topics that nobody has properly
covered before. Your approach is one from a person who has actually sat down and
went through the material in detail. And then you questioned the sanity of the
situation and what would be the problem areas. On my bookshelf, it will
definitely be one of the necessary books, right beside Petzold.
Christian Gross, consultant/mentor
cgross@eusoft.com
I think your book is very, very, VERY
good. I have compared it to others in the bookstore, and have found that your
book actually teaches me basic C++ fundamentals while I learn the STL... a very
nice experience to learn about both at once, hand-in-hand. I think your book is
laid out very well, and explains things in an easy-to-understand fashion.
Jeff Meininger, Software Developer,
boxybutgood.com
Your book is the best by far of any
I’ve seen. Please get it right so that we can all have an excellent and
“reliable” reference work! And please hurry! We are desperate for a
work of this quality! Steve Strickland, Live Minds
(a Puzzle business)
(On Usenet) Unlike most other C++
authors, Eckel has made a career of teaching C++ and Java classes ONLY.
He’s had the benefit of a GREAT deal of novice feedback, and the books
reflect that. His books are not just about writing in C++/Java, but
understanding the intent of the languages and the mindset that goes with
thinking in them. Eckel’s also the best technical writer I’ve read
since Jeff Duntemann. Very clear and easy to read. Don’t be put off by
the apparent large size of his books. Either can be read in *less* than 21
days. :-} Randy Crawford, MRJ Technology Solutions,
Fairfax VA
Your work is greatly appreciated and I
thank you for helping me understand both C++ and Java better.
Barry Wallin, Math/Computer Science Teacher,
Rosemount High School, Rosemount, MN
I would like to thank you for your book
“Thinking in C++” which is, with no doubt, the best book I
ever read about this subject. Riccardo Tarli - SW
Engineer - R&D TXT Ingegneria Informatica - Italy
I have been reading both of your books,
Thinking In Java and Thinking In C++. Each of these books is easily the best in
its category. Ranakarprasad H. Tiwari, Mumbai,
India
... the “Debugging Hints”
section is so valuable, I’m tempted to print it and keep it with me at all
times. I think this section should be a mandatory part of any introductory
class after the first one or two programming problems.
Fred Ballard, Synectics Inc.
Your book is really a treasure trove of
C++ knowledge. I feel like you give a good overview and then explain the nuts
and bolts. Raymond Pickles, Antenna Section, Radar
Division, U.S. Naval Research Laboratory, Washington DC
As an Internal Medicine Specialist and
Computer Scientist I spend a great deal of time trying to extract information
from books and journals. My experience is that a good author is one who makes
difficult concepts accessible, a great one makes it look almost easy. On this
score you are certainly one of my top three technical writers. Keep up the good
work. Dr. Declan O’Kane, Leicester,
England
For my second-level C++ course,
“Thinking in C++” is my constant reference and companion, and I urge
my students to consult it regularly. I refer to the chapter on Operator
Overloading constantly. The examples/code alone are worth the cost of the book
many times over. So many books and development environments are predicated on
the assumption that the only application for a programming language is for a
Windows environment; it’s great to find and use a book which concentrates
on C++ so we can prepare our students for careers in fields like embedded
systems, networking, etc., which require real depth of understanding.
Robert Chase, Professor, Sweet Briar
College
I think it’s a fantastic intro to
C++, especially for longtime dabblers like me – I often know
“how,” but rarely “why,” and TIC2 is a godsend.
Tony Likhite, System Administrator/DBA, Together
Networks
After reading the first 80 pages of this
book, I have a better understanding of oop then I've gotten out of the ton of
books I've accumulated on the subject. Thanks...
Rick Schneewind
Thinking
Prentice
Hall
Upper Saddle River, New Jersey
07458
http://www.prenhall.com
Publisher: Alan
Apt
Production Editor: Scott
Disanno
Executive Managing Editor: Vince
O'Brien
Vice President and Editorial
Director: Marcia Horton
Vice President of
Production and Manufacturing: David W.
Riccardi
Project Manager: Ana
Terry
Book Design, Cover Design and Cover Line
Art:
Daniel Will-Harris,
daniel@will-harris.com
Cover
Watercolor: Bruce Eckel
Copy Editor:
Stephanie English
Production Coordinator:
Lori Bulwin
Editorial Assistant: Toni
Holm
Marketing Managers: Jennie Burger,
Bryan Gambrel
©2000 by Bruce Eckel,
MindView, Inc.
Published by Prentice Hall
Inc.
Pearson Higher
Education
Upper Saddle River, New Jersey
07632
The information in this book is
distributed on an “as is” basis, without warranty. While every
precaution has been taken in the preparation of this book, neither the author
nor the publisher shall have any liability to any person or entitle with respect
to any liability, loss or damage caused or alleged to be caused directly or
indirectly by instructions contained in this book or by the computer software or
hardware products described herein.
All rights reserved. No part of
this book may be reproduced in any form or by any electronic or mechanical means
including information storage and retrieval systems without permission in
writing from the publisher or author, except by a reviewer who may quote brief
passages in a review. Any of the names used in the examples and text of this
book are fictional; any relationship to persons living or dead or to fictional
characters in other works is purely coincidental.
Printed in the United States of America
10 9 8 7 6 5 4 3 2 1
ISBN 0-13-979809-9
Prentice-Hall International (UK) Limited,
London
Prentice-Hall of Australia Pty. Limited,
Sydney
Prentice-Hall Canada, Inc.,
Toronto
Prentice-Hall Hispanoamericana, S.A.,
Mexico
Prentice-Hall of India Private Limited,
New Delhi
Prentice-Hall of Japan, Inc.,
Tokyo
Simon & Schuster Asia Pte. Ltd.,
Singapore
Editora Prentice-Hall do Brasil, Ltda.,
Rio de Janeiro
Dedication