różcnia w rozmiarach klas, dziwne

0
class X {
public:

    int a;
     void f() {
        cout << "X::f()\n";
    }

};

class Y : public X {
public:
    int a;
    void f() {
        cout << "Y::f()\n";

    }

};

Cześć. Jak widać, pomiędzy klasami jest jedna różnica. Y dziedziczy po Y. I wagi ( zwrócone przez sizeof() ) to:
X: 4
Y: 8
Z czego wynika ta różnica?

4

Ponieważ Y ma dwa pola typu int. Oba się nazywają a, więc jedno pole przykrywa drugie. Do tego przykrytego a z X w klasie Y możesz uzyskać tak: ((X*)this)->a.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0