请教关于基类和继承的问题
有如下程序
class CBase
{
public:
virtual void printf()
{
cout<<"CBase::printf()"<<endl;
cc();
}
};
class CDerived : public CBase
{
public:
virtual void printf()
{
cout<<"CDerived::printf()"<<endl;
}
void Addition(void)
{
cout<<"CDerived::Addition()"<<endl;
}
} ;
void main()
{
CBass a;
CDerived* b;
b=(CDerived*)&a;
b->Addition();
}
此程序运行会出现CDerived::Addition()
b只是它的地址指向a的内存地址,而a的内存地址中根本没有Addition,为何b->Addition()不会出现不可预料的错误,此时b的内存构造是什么样的?