Điều này vừa mới nhảy vào đầu tôi và tôi không thể đoán được nó.Trình biên dịch xác định vị trí của thành viên khi truy cập thông qua con trỏ cơ sở
Nếu tôi có một mã như thế này:
struct A { char x[100]; };
struct B { int data; };
struct C : A, B {};
#include <iostream>
using namespace std;
B* get_me_some_stuff()
{
static int x = 0;
if (++x % 2 == 0)
return new B();
else
return new C();
}
int main()
{
B* x = get_me_some_stuff();
B* y = get_me_some_stuff();
x->data = 10;
y->data = 20;
cout << x->data << " " << y->data << endl;
return 0;
}
Làm thế nào để trình biên dịch xác định vị trí bộ nhớ của data
thành viên?