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.