???????????????????????????????????????????????????????????????????????????????????X??????????????????????????????????????????????i?????????c++??????棬?????????????????????????????????

???????????X ????Y??????????????????????????????????

??????????c++???

class Y {
private:
    int j;
};
class X : public Y {
private:
    int i;
    int j;
};


int main() {
    X x1;//????????x1
    X x2 = x1;//??x1??????x2
}

??????????????????

_main    PROC

; 12   : int main() {

    push    ebp
    mov    ebp?? esp
    sub    esp?? 24                    ; ?x1 x2???24byte???

; 13   :     X x1;//????????x1
; 14   :     X x2 = x1;//??x1??????x2

    mov    eax?? DWORD PTR _x1$[ebp];???x1??????????????????eax???????x1??????????i???д??eax
    mov    DWORD PTR _x2$[ebp]?? eax;??eax???д??x2????????????棬????eax???д??x2?е??????????i
    mov    ecx?? DWORD PTR _x1$[ebp+4];??????x1????4byte???????????????д??ecx???????x1??????????i???д??ecx
    mov    DWORD PTR _x2$[ebp+4]?? ecx;??ecx???д?????x2????4byte??????????棬????ecx???д??x2????????????i
    mov    edx?? DWORD PTR _x1$[ebp+8];??????x1????8byte???????????????д??edx???????x1??????????j???д??edx
    mov    DWORD PTR _x2$[ebp+8]?? edx;??edx???д?????x2????8byte??????????棬????edx???д??x2??????????j

; 15   : }

    xor    eax?? eax
    mov    esp?? ebp
    pop    ebp
    ret    0
_main    ENDP

?????????????????????????????????????????????????????????????????????????????????????????????????????????????к???????á?

???????濴?????????????X??????Y????????????Y?????????п???????????

????c++??????£?

class Y {
private:
    int j;
public:
    Y(const Y& y) {}
    Y() {}//?????Y??????????????????????
};
class X  {
private:
    int i;
    int j;
    Y y;
};


int main() {
    X x1;//????????x1
    X x2 = x1;//??x1??????x2
}