|
|
|
|
Preface
Like any human language, C++
provides a way to express concepts. If successful, this medium of expression
will be significantly easier and more flexible than the alternatives as problems
grow larger and more complex.
You can’t just look at C++ as a
collection of features; some of the features make no sense in isolation. You can
only use the sum of the parts if you are thinking about design, not
simply coding. And to understand C++ this way, you must understand the problems
with C and with programming in general. This book discusses programming
problems, why they are problems, and the approach C++ has taken to solve such
problems. Thus, the set of features I explain in each chapter will be based on
the way that I see a particular type of problem being solved with the language.
In this way I hope to move you, a little at a time, from understanding C to the
point where the C++ mindset becomes your native tongue.
Throughout, I’ll be taking the
attitude that you want to build a model in your head that allows you to
understand the language all the way down to the bare metal; if you encounter a
puzzle, you’ll be able to feed it to your model and deduce the answer. I
will try to convey to you the insights that have rearranged my brain to make me
start “thinking in
C++.”
What’s new in the second edition
This book is a thorough rewrite of the
first edition to reflect all of the changes introduced in C++ by the
finalization of the C++ Standard, and also to reflect what I’ve learned
since writing the first edition. The entire text present in the first edition
has been examined and rewritten, sometimes removing old examples, often changing
existing examples and adding new ones, and adding many new exercises.
Significant rearrangement and re-ordering of the material took place to reflect
the availability of better tools and my improved understanding of how people
learn C++. A new chapter was added which is a rapid introduction to the
C concepts and basic C++ features for those who don’t
have the C background to tackle the rest of the book. The
CD ROM bound into the back of the book contains a seminar
that is an even gentler introduction to the C concepts necessary to understand
C++ (or Java). It was created by Chuck Allison for my
company (MindView, Inc.), and it’s called
“Thinking in C: Foundations for Java and C++.”
It introduces you to the aspects of C that are necessary for you to move on to
C++ or Java, leaving out the nasty bits that C programmers must deal with on a
day-to-day basis but that the C++ and Java languages steer
you away from (or even eliminate, in the case of Java).
So the short answer to the question
“what’s different in the 2nd edition?” is: what
isn’t brand new has been rewritten, sometimes to the point where you
wouldn’t recognize the original examples and
material.
|
|
|