指向基类的虚成员函数的指针赋值为基类的虚成员函数地址,如果派生类覆写了基类的对应虚函数,那么当用派生类的对象来调用该虚成员函数指针时,调用的是派生类虚函数!见下面的实例。
#include <iostream>
using namespace std;
class Base
{
public:
virtual void Func() { cout << "Base Func\n"; }
};
class Derived : public Base
{
public:
virtual void Func() { cout << "Derived Func\n"; }
};
typedef void (Base::*pFunc_t)();
int main()
{
void (Base::*pFunc1)() = &Base::Func;
pFunc_t pFunc2 = &Base::Func;
Base *pDerived = new Derived;
(*pDerived).Func();
(pDerived->*pFunc1)();
(pDerived->*pFunc2)();
delete pDerived;
return 0;
}
输出:
Derived Func
Derived Func
Derived Func