#include<iostream>
using namespace std;
class A
{
public:
void fun()
{
cout<<"fun of A be called"<<endl;
}
};
class B:public A
{
public:
void fun()
{
cout<<"fun of B be called"<<endl;
}
};
class C:public B
{
public:
void fun()
{
cout<<"fun of C be called"<<endl;
}
};
class D:public C
{
public:
void fun()
{
cout<<"fun of D be called"<<endl;
}
};
void f(A* ptr)
{
ptr->fun();
}
int main()
{
A a;
B b;
C c;
D d;
a.fun();
b.fun();
c.fun();
d.fun();
A* p;
p=&a;
f(p);
p=&b;
f(p);
p=&c;
f(p);
p=&d;
f(p);
}
声明A类下的void fun为 virtual void fun则输出结果为