????????????????麯???????Ч????????????????е????麯?????????汾????????????????????

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

class X {
private:
    int i;
public:
    virtual void f(int ii) {
        i = ii;
    }
    X() {
       f(1);
    }
};

class Y : public X {//Y?????X
private:
   int j;
public:
    virtual void f(int ii) {
        j = ii;
    }
    Y() {
        f(2);
    }
};

 


int main() {
 Y y;
}

???????????????????X??????Y?е????????????

????????Y????????????

??0Y@@QAE@XZ PROC                    ; Y::Y?? COMDAT
; _this$ = ecx

; 20   :     Y() {

    push    ebp
    mov    ebp?? esp
    push    ecx;?????????????this???(??ecx??????????????????????)?????
    mov    DWORD PTR _this$[ebp]?? ecx;??????????????????????
    mov    ecx?? DWORD PTR _this$[ebp];???????????????????????????????????(???????????????????????)
    call    ??0X@@QAE@XZ                ; ???????????
    mov    eax?? DWORD PTR _this$[ebp];????????????????????eax
    mov    DWORD PTR [eax]?? OFFSET ??_7Y@@6B@;????????vtable?????浽?????????????????棬?????????????vptr???

; 21   :         f(2);

    push    2;??2??????????????ú???f?????????????????????????f
    mov    ecx?? DWORD PTR _this$[ebp];???????????????ecx?????????????????????????f
    call    ?f@Y@@UAEXH@Z                ; ??????????е?f????

; 22   :     }

    mov    eax?? DWORD PTR _this$[ebp];??????????????????eax????????????????????????????????
    mov    esp?? ebp
    pop    ebp
    ret    0
??0Y@@QAE@XZENDP                    ; Y::Y

????????X????????????

??0X@@QAE@XZPROC                    ; X::X?? COMDAT
; _this$ = ecx

; 8    :     X() {

    push    ebp
    mov    ebp?? esp
    push    ecx;????????????????????????? ????????????????????????
    mov    DWORD PTR _this$[ebp]?? ecx;ecx??????????????????????????????
    mov    eax?? DWORD PTR _this$[ebp];????????????????eax
    mov    DWORD PTR [eax]?? OFFSET ??_7X@@6B@;?????????vtable????д??????????????????? ??????????????vptr???

; 9    :        f(1);

    push    1;??1??????????????ú???f ???????????????汾
    mov    ecx?? DWORD PTR _this$[ebp];???????????????????????????f
    call    ?f@X@@UAEXH@Z                ; ???ú???f

; 10   :     }

    mov    eax?? DWORD PTR _this$[ebp];????????????????eax??????????????????????????????
    mov    esp?? ebp
    pop    ebp
    ret    0
??0X@@QAE@XZ ENDP

???????????п????????????????????????????????????????汾?????