【发布时间】:2012-07-30 08:47:49
【问题描述】:
我的虚函数有问题: 以下是一些代码作为示例:
class A
{
public : virtual void print(void)
{
cout<< "A::print()"<<endl;
}
};
class B : public A
{
public : virtual void print(void)
{
cout<<"B::print()"<<endl;
}
};
class C : public A
{
public : void print(void)
{
cout<<"C::print()"<<endl;
}
};
int main(void)
{
A a,*pa,*pb,*pc;
B b;
C c;
pa=&a;
pb=&b;
pc=&c;
pa->print();
pb->print();
pc->print();
a=b;
a.print();
return 0;
}
结果: 打印() B::打印() C::打印() A::print()
我知道它是一个多态,并且知道有一个叫做虚函数表的表,但我不知道它是如何实现的,并且
a=b;
a.print();
结果是:A::print() 不是 B::print(),为什么它没有多态性。 谢谢!
【问题讨论】:
标签: c++ virtual-functions dynamic-binding