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++ in 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 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 which have
rearranged my brain to make me start “thinking in C++.”