include <iostream>
using namespace std;
class Base
{
public:
virtual void Show()
{
cout << "Base::Show()" << endl;
}
};
class Derive : public Base
{
public:
virtual void Show()
{
cout << "Derive::Show()" << endl;
}
};
void fun1(Base *ptr)
{
ptr->Show();
}
void fun2(Base &ref)
{
ref.Show();
}
void fun3(Base b)
{
b.Show();
}
int main()
{
Base b, *p = new Derive;
Derive d;
fun1(p);
fun2(b);
fun3(d);
system("pause");
return 0;
}
show()是虛函數(shù)薄疚;
*p是D對(duì)象攘烛,因此fun1(p)--》Derive;
b是B對(duì)象赊锚,因此fun2(b) --》Base;
d是D對(duì)象,B是D的父類搀愧,調(diào)用fun3(d)會(huì)將d轉(zhuǎn)成B對(duì)象,因此杭朱,輸出Base抑诸;
Derive::Show()
Base::Show()
Base::Show()