在某些(或许是错误)设计中会在基类中定义成员函数指针数组(或其他容器)
然后派生类对其(用派生类的成员函数)进行初始化。
外部进行任务分配时,进入基类接口,查询对应的成员函数指针,然后以此路由到具体的派生类中。
但这样有一个问题:派生类必须优先(第一个)继承这个基类。
因为基类中调用成员函数时传递的是基类this地址,而派生类的成员函数的(汇编)实现,是直接把传入的地址认为是(派生类)的起始地址。
那么当派生类不是第一个继承这个基类时,数据就会错位。当然:虚函数作为成员函数时是没有问题的,还是会保持虚函数的多态能力。
因为派生类的虚函数代码生成中,会知道(认为)传入的地址是基类的起始地址,函数中访问成员变量都会做(自然的)偏移,以访问正确的数据。
---
说了这么多,就是表示成员函数指针用来进行调度分派是很不安全的,而且只能路由到派生类中。
这里我建议使用:std::function。再借助std::bind绑定到各种函数,比如(静态绑定)成员函数。