class A{
public:
void func(){
cout << "hello" << endl;
vfunc();
}
virtual void vfunc(){
cout << "vfuncA" << endl;
}
};
class B:public A{
public:
void func(){
vfunc();
}
virtual void vfunc(){
cout << "vfuncB" << endl;
}
};
int main() {
A* a = new B;
a->func();
}
输出:
hello
vfuncB
结论:
A指针会调用类A的func函数,但是A的func函数调用了vfunc函数,这个vfunc函数不是A的,而是B的,也就是A指向的实际类型。