BTW, I think I should have been saying double dispatch instead of dynamic dispatch:

http://www.codeguru.com/forum/showthread.php?t=286063
http://en.wikipedia.org/wiki/Double_dispatch