This very useful book covers it a bit in the intro: http://www.amazon.com/Taming-Pattern-Classes-Persistence-Pro...
The number one lesson learned from that experience according to the author and my memory was "Make your class hierarchies directed acyclic graphs" ... which of course wasn't a C++ issue at all. As the first widely adopted OO language C++ gets a lot of mostly undeserved flack for being the medium in which a lot of us learned the OO paradigm.
A bit like how all those companies that oversold expert systems in the '80s blamed Lisp for their problems, causing both AI and Lisp winters.
Fresh book recommendations delivered straight to your inbox every Thursday.