|One issue: I would define a virtual destructor for each interface. This allows you to delete an instance given a pointer to its interface.
If you are using c++ interfaces to implement something like COM, you may wish to disregard this advice.
If you have an important point to make, don't try to be subtle or clever. Use a pile driver. Hit the point once. Then come back and hit it again. Then hit it a third time - a tremendous whack.