language. You don’t need to know a specific language or technology, however. In particular, you
don’t need to know C, nor do you need to know anything about object-oriented programming.
The C programming language influenced the design of many other languages, from PHP to Perl
to AWK to C#, not to mention C++. As a result, many programmers who do not know C or C++
nonetheless find many language constructs hauntingly familiar. You might even feel confident enough
to skip sections of this book that seem to cover old ground. Don’t do that! From the start, the lessons
present language features that are unique to C++. In a few, isolated cases, I will tell you when it is safe
to skip a section, and only that section. Even when a language feature is familiar, it might have subtle
issues that are unique to C++.
The trap is most perilous for C programmers because C++ bears the greatest superficial
similarity with C. C programmers, therefore, have the most to overcome. By design, many C
programs are also valid C++ programs, leading the unwary C programmer into the trap of thinking
that good C programs are also good C++ programs. In fact, C and C++ are distinct languages, each
with its own idioms and idiosyncrasies. To become an effective C++ programmer, you must learn the
C++ way of programming. C programmers need to break some of their established habits and learn
to avoid certain C features (such as arrays) in favor of better C++ idioms. The structure of this book
helps you get started thinking in terms of C++, not C.