#include"iostream.h"classA...{public:intnum;A()...{num=1;}virtualvoidDisplay()...{cout<<"A";}voidprint()...{cout<<num;}staticvoidshow()...{Aa;a.Display();a.print();}};classB:publicA...{public:intnum;B()...{num=2;}voidDisplay()...{cout<<"B";}voidprint()...{cout<<num;}virtualvoidshow()...{Display();print();}};classC:publicB...{public:intnum;C()...{num=3;}voidDisplay()...{cout<<"C";}virtualvoidprint()...{cout<<num;}voidshow()...{Display();A::print();}};voidmain()...{B*b=newC;cout<<"b->num="<<b->num<<endl;} 继承之后类B中的num不会覆盖A中的num,继承之后B中A中的num不可见,除非A::num才可以类C中的num也不会覆盖B和A中的num,也是同样的道理当一个c对象地址转成B地址,可见的就是B类中num,所以打印出来的就是2