今天在看源码遇到一个问题,刚开始没看明白,后简化为如下代码:
#include <iostream>
typedef void (*func_type)(void);
class A{
public:
A(func_type func){
func_ = func;
};
void dofunc(){
func_();
}
func_type func_;
};
class B:public A{
public:
B():
A(&B::dofunc1){
}
static void dofunc1(){
std::cout<<"do func"<<std::endl;
}
};
int main()
{
B b;
b.dofunc();
}
结果:
一眼看去,在子类的构造函数中似乎是构造了一个父类的匿名变量,但运行后发现实际做的是初始化了父类的成员变量。