struct A { int a; } struct B: A { int a; } void fill (A* z, int n) { for (int i = 0; i < n; i++) z[i].a = i; } main(){ B y[8]; fill(y, 8); cout << y[2].a << endl; } // 4 not 2
because fill function refer A but B is double sized memory
struct A { int a; } struct B: A { int a; } void fill (A* z, int n) { for (int i = 0; i < n; i++) z[i].a = i; } main(){ B y[8]; fill(y, 8); cout << y[2].a << endl; } // 4 not 2