例如: 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)指向派生类的时候,只能 *** 作派生类中从基类中继承过来的数据。 指向派生类的指针,因为内存空间比基类长,会导致严重了后果,所以不允许派生类的指针指向基类。而基类的指针可以指向派生类。 |
以上是内存溢出为你收集整理的为什么父类指针可以指向子类反之则不行全部内容,希望文章能够帮你解决为什么父类指针可以指向子类反之则不行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)