very good at introducing object-oriented principles and how they are implemented in C++
I am very much in two minds about this book. The Preface states that the book is aimed at being an introductory or advanced text on object-oriented programming and can be used for a graduate course on OOP and C++ topics.
This book is very good at introducing object-oriented principles and how they are implemented in C++. The book eases the reader through data abstraction, inheritance, generic types and exceptions. In each case easy to understand examples are used to highlight points brought up by the text. For most of the object-oriented topics that are covered, there are also brief notes on how they are handled in Smalltalk and Eiffel.
Dattatri had previously worked for Taligent and that is easy to see through the coding standards used throughout the book. As long as you can look past the class prefix 'T', enumerated type prefixes and member variables starting with '_' the examples are very good ('Names starting with an underscore are reserved for special facilities in the implementation and the run-time environment, so such names should not be used in application programs.' C++ Programming Language, 3rd Ed, Stroustrup, 4.9.3 Names).
As with most classroom examples, strings, dates and containers make appearances in the book. This leads me on to my only negative comment and that is that the standard library only gets a brief mention on page 685 in reference to the STL containers, iterators and algorithms. The standard strings make a one-line appearance in the Appendix covering namespaces and the standard exceptions are not covered at all.
Having said that though, the book is very good at getting across the underlying substance of object-oriented programming. It does cover issues such as multiple inheritance and the issues that come along with it, private inheritance and idioms such as handle-body.
I would recommend this book highly for its coverage of object-oriented software development and recommend with reservations its coverage of C++, but those reservations are based mainly on the lack of reference to the standard library.