????4. ??????????????????
???????????????????ú??vtable???????????????????ж??????vtable??????????????????????????????main????????????????????C++???????vtable???????????????
.globl main
.type   main?? @function
main:
.LFB3:
.cfi_startproc
.cfi_personality 0x0??__gxx_personality_v0
pushl   %ebp
.cfi_def_cfa_offset 8
movl    %esp?? %ebp
.cfi_offset 5?? -8
.cfi_def_cfa_register 5
andl    $-16?? %esp
subl    $32?? %esp
leal    24(%esp)?? %eax
movl    %eax?? (%esp)
call    _ZN6DeriveC1Ev
leal    24(%esp)?? %eax
movl    %eax?? 28(%esp)
movl    28(%esp)?? %eax
movl    (%eax)?? %eax
movl    (%eax)?? %edx
movl    28(%esp)?? %eax
movl    %eax?? (%esp)
call    *%edx
movl    $0?? %eax
leave
ret
.cfi_endproc
andl    $-16?? %esp
subl    $32?? %esp
????????????????????d??bp?????????????????μ????
????Derive d;
????Base *pb;
????leal    24(%esp)?? %eax
????movl    %eax?? (%esp)
????call    _ZN6DeriveC1Ev
????esp+24?????d????????????????????????????d?????????????????C?????????£?
????Derive::Dervice(&d);
????leal    24(%esp)?? %eax
????movl    %eax?? 28(%esp)
??????????????&d???????pb???????
????pb = &d;
??????????????????????Σ?
????movl    28(%esp)?? %eax
????movl    (%eax)?? %eax
????movl    (%eax)?? %edx
????movl    28(%esp)?? %eax
????movl    %eax?? (%esp)
????call    *%edx
?????????C?????????????
????pb->vtable[0](bp);
??????????????f?麯??????vtable???0???????????????
????5. С??
?????????????????????????C++????δ???????????????????????????????????????????????????
????1.??????и??е?vtable??????????????д??????麯????
????2. ??????????????????vtable????????麯????
????3.??????????????????麯?????????object->vtable?????麯????offset???????
??????????????g++?????????????VC++?????в?????????????????