Dynamic binding is decided by the actual object type. suppose Base* ptr =
new Derived. ptr actually point to a Derived object and compiler knows it.
Through ptr,we can get virtual table pointer vptr (the code segment address)
of Derived object. When running, the virtual function can be found through
vptr with virtual function index (offset). In that way, we have dynamic
binding.