A
lot has changed in the C++ world since the second edition of Stan B. Lippman's
C++
Primer
was published in 1991. The biggest event that happened in the
meantime was the standardization of the C++ programming language. Consequently,
it is not surprising that the newly published third edition differs significantly
from the second edition. Two obvious changes can be noticed without even
opening the book:
-
It doubled in size (now: 1,200+ pages).
-
Josée Lajoie joined Stan Lippman
as co-author. Josée was heavily involved with the C++ standardization
process: for three years she was vice chair of the C++ standard committee
and for four years she lead the core language working group.
The first and second editions of the
C++
Primer
were recognized as classic C++ textbooks for C++ beginners,
easier to understand and written in a more tutorial style than the corresponding
editions of Bjarne Stroustroup's
The C++ Programming Language
. This
characterization still holds for the third edition as well. In addition,
the third edition of
C++ Primer
covers all new language features?such
as namespaces, RTTI, and new style casts?plus the C++ standard library
(except the support for internationalization and the numeric library).
Another improvement to the
third edition is the organization and treatment of advanced features. The
new edition contains more extensive descriptions of C++ language rules
than its predecessor?for example, the type conversion rules are now covered
in depth. To prevent a C++ beginner from getting overwhelmed by details,
these sections are indicated by a special marker. This way it's easy to
recognize which section can be skipped when the book is read as an introductory
textbook.
Moreover, language concepts
are combined with typical idioms that show how these language features
can be used most effectively. Also, potential pitfalls are pointed out.
An example for a new C++ idiom can be found in chapter 12.3 about Function
Objects: It demonstrates how the concept of classes and the ability to
overload the function call operator can be combined to implement functions
as objects. Differences to functions are discussed: when passed as a parameter,
a function object's operator() can be inlined while a function pointer
cannot; function objects can have state, functions cannot, etc.
C++ Primer
is an excellent
tutorial for software developers who start with the C++ language. This
new edition is equally interesting for people who are already familiar
with the C++ basics and need information about advanced language features
and the changes introduced by the standardization.
Angelika Langer
develops
and teaches classes on advanced C++, STL, multithreading, internationalization,
and Java. She has served on the ANSI/ISO C++ Committee since 1993.
Klaus
Kreft
is a software architect and consultant with more than a decade
of experience in industrial software development. He works for Siemens
Business Services in Germany. Langer and Kreft are working on a book about
standard C++ iostreams and locales and are columnists for
C++
Report
.
|