#include
using std::cout;
using std::endl;
class C_A
{
public:
C_A(int n)
{Cn = 10;}
virtual void fun()
{
cout << "C_A fun()" << endl;
}
void funCA0()
{
cout << "C_A funCA0()" << endl;
}
int Cn;
};
class C_B: public C_A
{
public:
C_B(int n0,int n1):C_A(n1){}
virtual void fun()
{
cout << "C_B fun()" << endl;
}
void funCB0()
{
cout << "C_B funCB0()" << endl;
}
int Cn;
};
int main()
{
C_A caVar0(1);
C_B cbVar0(1,1);
C_A *pCA0 = &caVar0; //
C_A *pCA1 = &cbVar0; //允许向上隐式转换
C_B *pCB0 = (C_B*)&caVar0; //必须向下显式转换
pCA0->fun();
pCA1->fun();
pCB0->funCB0();
return 0;
}