上結合我在虛擬功能的問題: 下面是一些代碼作爲一個例子:動態在C++中複製的對象
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;
}
結果: A ::打印() B ::打印( ) ç::打印() A :: print()函數
我知道這是一個多態性,並且知道有人稱表的虛函數表,但我不知道它是如何實現的,
a=b;
a.print();
結果是:A :: print()不是B :: print(),爲什麼它沒有多態性。 謝謝!
非常感謝! – 2012-07-31 03:24:18