|
I
nside
the C++ Object Model
was published in 1996,
written while the programming language C++ was still "under construction"
in the sense that the standards committee was still adding and clarifying
features. Yet,
Inside the C++ Object Model
is a book of lasting
value even today?two years after its publication and six months after ratification
of the language standard.
Inside the C++ Object Model
discusses the object-oriented features of C++?their details, their cost
in terms of runtime, compile time, or space overhead. Lippman aims to put
to rest many common myths about C++ such as "C++ is bulky and slow" or
"C++ does things behind my back." This approach is particularly interesting
to C++ programmers who must optimize their programs and want to understand
the language thoroughly.
The book's topics include what
data encapsulation costs compared to C-style programming. This subject
includes a discussion of member access and inlining of functions. The semantics
of construction is covered, including which implicit calls to constructors,
destructors, conversions, and copy operations happen, when they happen,
and why. The cost of run time polymorphism?for example, virtual functions?and
the cost of multiple inheritance in general and virtual inheritance in
particular are discussed. Lippman shows what operator new and delete are
supposed to do, and why and when temporary objects are created, including
how long they live. Lippman answers all these questions, in detail, with
competence that is based on his former involvement in the cfront development
at Bell Labs.
After studying
Inside the
C++ Object Model
, you will know a lot about the memory and run time
cost of each of the object-oriented features in C++. It enables you to
decide for yourself whether a particular C++ language feature is what you
need or whether you would rather refrain from using it.
While the book is sound and
comprehensive about the object-oriented language features, it falls short
of paying equally intense attention to the newer features. Templates, exception
handling, and run-time type information are discussed only briefly. Name
spaces are not covered at all. Reading this book now, in 1998, these deficiencies
are disappointing, because a lot can be said about the cost of template
instantiation or exception handling. But then, the book promises to explain
the C++ object model. It does not aim to cover all of what is under the
hood of C++, just the object-oriented features?and here it does a perfect
job. However, we would love to see a book explaining templates, exception
handling, run-time type information, and name spaces at the same level
of insight that Lippman brings to
Inside the C++ Object Model.
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
.
|