【发布时间】:2014-01-27 07:18:05
【问题描述】:
class A
{
int a;
public:
A()
{
}
virtual void f1()
{
cout<<"A "<<endl;
}
virtual void f2()
{
f1();
}
};
class B: public A
{
int b;
public:
B()
{
}
void f1()
{
cout<<"B "<<endl;
}
};
int main(void)
{
B obj;
obj.f2();
}
o/p - B
我正在 Visual stdio 2010 上运行此代码。 请解释为什么调用 B 类的函数 f1()?为什么不是 A 类的函数 f1()。
【问题讨论】:
-
因为你没有调用
A的f1函数 -
因为
f1在 A 中是virtual,在 B 中被覆盖。您使用的是 B 类型的对象。
标签: c++