C++中的多态之父类指针调用子类对象的虚函数失败,与子类、父类占用的内存大小以及指针步长的关系

原来使用父类和子类指针都指向子类对象,然后调用虚函数,但是在子类对象中加入一个int i;属性之后,宕机了。

C++中的多态之父类指针调用子类对象的虚函数失败,与子类、父类占用的内存大小以及指针步长的关系_第1张图片C++中的多态之父类指针调用子类对象的虚函数失败,与子类、父类占用的内存大小以及指针步长的关系_第2张图片

这是因为,父类指针p和子类指针c(加入int i之后),两个类所占的内存大小也不一样了,指针的数据类型是他所指向的内存空间的数据类型,因此p指针自加1的大小为一个父类对象的内存大小,而c指针自加1的大小为一个子类对象的大小。

p与c的指针步长不一样。

此时仍想利用p指针实现多态,而p++之后,p类指针增加的内存大小(p指针的偏移量)是一个父类对象的大小,指向的是数组中第

你可能感兴趣的:(与子类,父)