G'day,
Effective C++, 3rd edition dates from 2005 (sanitised Amazon link) and it is as ever full of excellent advice.
You might also like to have a look at Scott's website which is also full of excellent articles and updates.
On the other hand, if you've got a first edition of Effective C++, it has the excellent item 44 in it. This is titled "Say what you mean: understand what you're saying." and it covers what you should be aware of when declaring and using various aspects in OOD, e.g. what a common base class should stand for, what a pure virtual function implies, etc.
This excellent item didn't make it into later editions unfortunately, probably due to space issues, but everytime I am involved with a new team I get everyone to read that short item.
It gels everyone's mind so that they have a consistent mindset when
- declaring classes and inheritance models in their OO designs, and
- using classes and design designed by others.
Everyone is then on the same page with no nasty surprises popping up later on due to inconsistent assumptions or inconsistent understandings of what something means.
Edit: While looking to see if there was a copy of this item online I came across this interview with Scott where he discusses this item.
HTH
cheers,