例如:class a{public:int aa};class b:public a{public: int bb;}从内存的来看如a---------||占一个int数据大小--||----(aa数据)------||---------而b则是---------|---------|占一个int数据大小--|占一个Int数据大小--||从a中继承而来------|---(bb数据----------||------------------当定义一个基类类型的指针时a *p;这时,这个指针指向的是a类型的数据当p指针指向派生类的时候,因为p是a类型的指针,所以*p只解释为a类型数据的长度,即————————-|---------|占一个int数据大小--|占一个Int数据大小--||从a中继承而来------|-----(bb数据)-------||------------------|------------|------------| |-p只指向这个区域_--| 因此,当基类的指针(P)指向派生类的时候,只能操作派生类中从基类中继承过来的数据。指向派生类的指针,因为内存空间比基类长,会导致严重了后果,所以不允许派生类的指针指向基类。而基类的指针可以指向派生类。 C++的多态性能解决基类指针不能操作派生类的数据成员的问题。
时间: 2024-10-11 20:53:59