????c++?е???
???????????? ???????[ 2013/5/31 10:37:22 ] ????????
????????????????麯???????Ч????????????????е????麯?????????汾????????????????????
????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
???????????п????????????????????????????????????????汾?????
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11