以下代码输出什么?
#include
class A
{
public:
void f1()
{
f2();
}
virtual void f2()
{
printf("A\n");
}
};
class B : public A
{
public:
void f2()
{
printf("B\n");
}
};
int main()
{
A *a = new B();
a->f1();
return 0;
}
输出B,因为f1是虚函数,看实际实例化的那个对象的类型
多态问题啊,你看下a实际是上B*类型的,所以最后运行时判断,调用子类的f1