原来使用父类和子类指针都指向子类对象,然后调用虚函数,但是在子类对象中加入一个int i;属性之后,宕机了。
这是因为,父类指针p和子类指针c(加入int i之后),两个类所占的内存大小也不一样了,指针的数据类型是他所指向的内存空间的数据类型,因此p指针自加1的大小为一个父类对象的内存大小,而c指针自加1的大小为一个子类对象的大小。
p与c的指针步长不一样。
此时仍想利用p指针实现多态,而p++之后,p类指针增加的内存大小(p指针的偏移量)是一个父类对象的大小,指向的是数组中第一个子类对象的新增成员变量int i;而不是VPTR指针,此时若使用指针p调用虚函数(来实现多态),则会宕机。