First read this book about four years ago (maybe five). But I haven't had a chance to program in it in that time. So I figure I better read it again.
A language doesn't have to be 'an object oriented' lanuage in order to write object oriented code. Stroustrup isn't the first guy to tell me this. Actually it was Marco Mason who edits C++ and other journals for the Cobb Group (now part of Ziff-Davis) and a friend and former coworker of mine. But it's good to hear it from the other master, as well.
I remember well Marco telling me the progession on the path to C++ enlightenment. First, you say, "What is this shit?" Then you say, "C++ is a super powered C." Finally you start thinking of C as a braindead C++. We'll see.
C++ does have some nice features, from the simple to the complex. I like the '//' style of comments. I also like the function proto- typing. (I make tons of typos and this is very helpful.) I also like the ability to do true pass by reference that was lacking in C. The features that C++ has that support OO are (of course) data hiding (with private and protected members), encapsulation (where the functions that operated on the data members of a class are included with the definition of the class), inheritance (multiple that allows the programmer to pass on characteristics of data structures without completely redefining all of the features again), and finally, polymorphism (operator/function overloading that allows the programmer to use the same name to define functions that operate on different data-- This is helpful for creating consistent interfaces to the classes, for example).
The book goes into some detail on each of these and covers a number of other topics, as well, including, templates, streams, library design, exception handling, and a few others. These are not ad hoc topics, by the way, but critical to writing effective programs in the language.
There's also a substantial (approx 150 page) C++ reference manual at the end of the book (which I didn't read either this time or the last time I read the book). [Actually, I may browse this before going on to my next book which is Coplien's Advanced C++ .
I'm afraid I'm still at Marco's phase one in all of this. On a conceptual level, I understand very well the advantages to all of these features. My problem is in the actual application of them. These four man features (polymorphism, encapsulation, data-hiding, and multiple inheritance) are not just cool toys in their own right, but useful because they permit a way of thinking about various problems. And this is the thing I'm not taking away with this book. I sense this higher level, but I can't experience it in earnest. That's why I'm reading the Coplien.
Last time I read Stroustrup, I wrote a program in C++ that does what I always a write a program to do when I learn a new language : assist the user in solving a cryptogram. In retrospect, I realize very clearly that I was not using C++ in the way that God and Bjarne intended man to use it. Fortunately I've lost track of that program (and have no intention of looking for it), so I'll write another version and this time I'll put a little more thought into the proper style. But maybe I'll wait until after I finish Coplien. We'll have to see on that one.
For the record I've written my crypto-helper in several versions of BASIC, in C++ (poorly), in C (adequately), in FORTRAN, in LISP, in SNOBOL (completely forgotten), and in assembler. (Hope I haven't left anything out.)
Stroustrup is clearly da man with regard to C++. I get the feeling browsing a few other books on the subject that some authors really do not understand the purpose of the whole thing. In fact, I seem to recall Marco having said as much to me long ago. But Bjarne (and Marco for that matter) are definitely the masters. Can't think of any better place to start than with him.
A final note: my wife recently took C++ at work and it appears that though they are using Stroustrup, the book is different. So I'm guessing it's up to the third edition at least, by now.