c++的class的步长问题

#include <stdio.h>

class A{
    public:long a;
};
class B : public A {
    public:long b;
};
int main() {
    B bArray[4];
    A* aArray = bArray;
    for(int i=0; i<4; ++i){
        bArray[i].a = 1;
        bArray[i].b = 1;
        aArray[i].a=2;
    }
    for(int i=0; i<4; ++i){
          printf("%ld%ld",bArray[i].a, bArray[i].b);
    }
    return 0;
}

打印结果22221111

因为B的步长为8,A的步长为4,指针bArray加1的长度是8,而指针aArray加1的长度为4

猜你喜欢

转载自blog.csdn.net/k3108001263/article/details/84645809