Just went through this link virtual table and _vptr
It says that the workflow will be like ..
-
base_ptr->base_vptr—-> to check the access of virtual function in base class.
-
base_ptr->derived_vptr->virtual_function()—> to call/invoke the virtual function.
Hence the derived class virtual function is called.. Hope you find it helpful.