///关于继承类的指针指向基类的内存
class Base
{
public:
virtual void Print(void)
{
cout<<"Base"<<endl;
}
};
class Derive : public Base
{
public:
Derive(void)
{
a = 12;
}
virtual void Print(void)
{
cout<<"Derive"<<endl;
cout<<"a = "<<a<<endl;
}
int a;
};
实验代码如下
Base b;
Derive *p = (Derive *)&b;///如果不强制转化,则编译不能通过
p->Print(); ///调用的是继承类的 Print,如果 Print 不是虚函数,也是调用继承类的函数,但要注意这个函数
///不能访问继承类数据变量啊
///根本没有 a 这个变量的内存
///把子类的指针赋给基类,不论是 dynamic_cast,static_cast 还是直接赋给,调用
///虚函数总是调用子类的实现