&Base::Func
The tool "accepts the address of the Func function in Base ".
Since this is a virtual function, it is not a simple pointer to the function, but actually stores the index in the virtual function table.
Then, calling this with ->* , which means βremoving and accessing this elementβ, you get a function in that index in virtual table b , which is a version of Derived . So it is basically the same as b->Func() .
Why would anyone do this? I have no idea!
I explained a bit about member function pointers earlier, here (with pictures!) .
source share