In his book The C++ Programming Language, Stroustrup gives a bottom-up overview of the C++ programming language. One of the most interesting parts of the book is that Strupstrup, as the designer of C++, gives you his opinions as to how C++ should be used. He explains how the features of C++ support various programming paradigms - procedural programming, modular programming, object-oriented programming, and generic programming. In fact, he devotes an entire section (three chapters) of the book to explaining how C++ should be used to produce object-oriented systems.

The discussion is fairly philosophical and dense at times. Sometimes you'll have to reread a sentence a few times to understand what it means. You get the feeling that Stroustrup is more interested in providing an analytical study of the language rather than a How-To. The book is definitely not for people new to object-oriented programming. I don't think it's ideal even for people who are new to C++ but already know OOP. This book is recommended for C++ experts who want a deeper understanding of the language. It's definitely easier reading than a copy of the C++ standard.

Stroustrup also gives a lot of detail on the obscure features in the language. However, he does not give enough detail for the book to replace a copy of the C++ standard. Often, the details for a particular feature are not consolidated in one place and can be hard to find. In that sense, this book doesn't serve very well as a reference manual either.