#include <cstdio> Left : Right : Bottom : Left, * bp = &* lp =* rp =* tp = (Top::*tgp1)() = &(Top::*tgp2)() = &(Left::*lgp1)() = &(Left::*lgp2)() = &(Left::*lgp3)() = &(Left::*lgp4)() = &(Right::*rgp1)() = &(Right::*rgp2)() = &(Right::*rgp5)() = &(Right::*rgp6)() = &(Bottom::*bgp1)() = &(Bottom::*bgp2)() = &(Bottom::*bgp3)() = &(Bottom::*bgp4)() = &(Bottom::*bgp5)() = &(Bottom::*bgp6)() = &(Bottom::*bgp7)() = &, , , , , , , , , , , , , , , , , , &, &, &, &, &, &, &, &, &, &, &, &, &, &, &, &, &->*->*->*->*->*->*->*
??_9Top@@$BA@AE PROC eax, DWORD PTR [ecx] DWORD PTR [eax] eax, DWORD PTR [ecx] DWORD PTR [eax+] eax, DWORD PTR [ecx] DWORD PTR [eax+]
: (:*tgp1)() = &:get1 DWORD PTR _tgp1$[ebp], OFFSET ??_9Top@@$BA@AE DWORD PTR _tgp2$[ebp], OFFSET ??_9Top@@$B3AE DWORD PTR $T4213[ebp], OFFSET ??_9Top@@$BA@AE DWORD PTR $T4213[ebp+], DWORD PTR $T4213[ebp+], ecx, DWORD PTR $T4213[ebp] DWORD PTR _lgp1$[ebp], ecx edx, DWORD PTR $T4213[ebp+] DWORD PTR _lgp1$[ebp+], edx eax, DWORD PTR $T4213[ebp+] DWORD PTR _lgp1$[ebp+], eax DWORD PTR $T4214[ebp], OFFSET ??_9Top@@$B3AE DWORD PTR $T4214[ebp+], DWORD PTR $T4214[ebp+], edx, DWORD PTR $T4214[ebp+ DWORD PTR _lgp2$[ebp+ eax, DWORD PTR $T4214[ebp+ DWORD PTR _lgp2$[ebp+ DWORD PTR $T4215[ebp], OFFSET ??_9Top@@$BA@AE DWORD PTR $T4215[ebp+], DWORD PTR $T4215[ebp+], edx, DWORD PTR $T4215[ebp+ DWORD PTR _lgp3$[ebp+ eax, DWORD PTR $T4215[ebp+ DWORD PTR _lgp3$[ebp+ DWORD PTR $T4216[ebp], OFFSET ??_9Top@@$B3AE DWORD PTR $T4216[ebp+], DWORD PTR $T4216[ebp+], edx, DWORD PTR $T4216[ebp+ DWORD PTR _lgp4$[ebp+ eax, DWORD PTR $T4216[ebp+ DWORD PTR _lgp4$[ebp+ DWORD PTR $T4217[ebp], OFFSET ??_9Top@@$BA@AE DWORD PTR $T4217[ebp+], DWORD PTR $T4217[ebp+], edx, DWORD PTR $T4217[ebp+ DWORD PTR _rgp1$[ebp+ eax, DWORD PTR $T4217[ebp+ DWORD PTR _rgp1$[ebp+ DWORD PTR $T4218[ebp], OFFSET ??_9Top@@$B3AE DWORD PTR $T4218[ebp+], DWORD PTR $T4218[ebp+], edx, DWORD PTR $T4218[ebp+ DWORD PTR _rgp2$[ebp+ eax, DWORD PTR $T4218[ebp+ DWORD PTR _rgp2$[ebp+ DWORD PTR $T4219[ebp], OFFSET ??_9Top@@$BA@AE DWORD PTR $T4219[ebp+], DWORD PTR $T4219[ebp+], edx, DWORD PTR $T4219[ebp+ DWORD PTR _rgp5$[ebp+ eax, DWORD PTR $T4219[ebp+ DWORD PTR _rgp5$[ebp+ DWORD PTR $T4220[ebp], OFFSET ??_9Top@@$B3AE DWORD PTR $T4220[ebp+], DWORD PTR $T4220[ebp+], edx, DWORD PTR $T4220[ebp+ DWORD PTR _rgp6$[ebp+ eax, DWORD PTR $T4220[ebp+ DWORD PTR _rgp6$[ebp+ DWORD PTR $T4221[ebp], OFFSET ??_9Top@@$BA@AE DWORD PTR $T4221[ebp+], DWORD PTR $T4221[ebp+], edx, DWORD PTR $T4221[ebp+ DWORD PTR _bgp1$[ebp+ eax, DWORD PTR $T4221[ebp+ DWORD PTR _bgp1$[ebp+ DWORD PTR $T4222[ebp], OFFSET ??_9Top@@$B3AE DWORD PTR $T4222[ebp+], DWORD PTR $T4222[ebp+], edx, DWORD PTR $T4222[ebp+ DWORD PTR _bgp2$[ebp+ eax, DWORD PTR $T4222[ebp+ DWORD PTR _bgp2$[ebp+ DWORD PTR $T4223[ebp], OFFSET ??_9Top@@$BA@AE DWORD PTR $T4223[ebp+], DWORD PTR $T4223[ebp+], edx, DWORD PTR $T4223[ebp+ DWORD PTR _bgp3$[ebp+ eax, DWORD PTR $T4223[ebp+ DWORD PTR _bgp3$[ebp+ DWORD PTR $T4224[ebp], OFFSET ??_9Top@@$B3AE DWORD PTR $T4224[ebp+], DWORD PTR $T4224[ebp+], edx, DWORD PTR $T4224[ebp+ DWORD PTR _bgp4$[ebp+ eax, DWORD PTR $T4224[ebp+ DWORD PTR _bgp4$[ebp+ DWORD PTR $T4225[ebp], OFFSET ??_9Top@@$BA@AE DWORD PTR $T4225[ebp+], DWORD PTR $T4225[ebp+], edx, DWORD PTR $T4225[ebp+ DWORD PTR _bgp5$[ebp+ eax, DWORD PTR $T4225[ebp+ DWORD PTR _bgp5$[ebp+ DWORD PTR $T4226[ebp], OFFSET ??_9Top@@$B3AE ecx, ecx SHORT $LN7@main DWORD PTR tv90[ebp], SHORT $LN8@main $ DWORD PTR tv90[ebp], edx, DWORD PTR tv90[ebp] DWORD PTR $T4226[ebp+], edx DWORD PTR $T4226[ebp+], eax, DWORD PTR $T4226[ebp] DWORD PTR _bgp6$[ebp], eax ecx, DWORD PTR $T4226[ebp+] DWORD PTR _bgp6$[ebp+], ecx edx, DWORD PTR $T4226[ebp+] DWORD PTR _bgp6$[ebp+], edx DWORD PTR $T4229[ebp], OFFSET ??_9Bottom@@$B7AE DWORD PTR $T4229[ebp+], DWORD PTR $T4229[ebp+], ecx, DWORD PTR $T4229[ebp+ DWORD PTR _bgp7$[ebp+ edx, DWORD PTR $T4229[ebp+ DWORD PTR _bgp7$[ebp+], edx
: (bp->*bgp1)() edx, DWORD PTR _bp$[ebp] eax, DWORD PTR [edx+] ecx, DWORD PTR _bgp1$[ebp+] edx, DWORD PTR [eax+ecx] eax, DWORD PTR _bp$[ebp] ecx, DWORD PTR [eax+edx+] ecx, DWORD PTR _bgp1$[ebp+] DWORD PTR _bgp1$[ebp] edx, DWORD PTR [ecx+ eax, DWORD PTR _bgp2$[ebp+ ecx, DWORD PTR [edx+ecx+ ecx, DWORD PTR _bgp2$[ebp+ eax, DWORD PTR _bp$[ebp] ecx, DWORD PTR [eax+] edx, DWORD PTR _bgp3$[ebp+] eax, DWORD PTR [ecx+edx] ecx, DWORD PTR _bp$[ebp] ecx, DWORD PTR [ecx+eax+] ecx, DWORD PTR _bgp3$[ebp+] DWORD PTR _bgp3$[ebp] eax, DWORD PTR [edx+ ecx, DWORD PTR _bgp4$[ebp+ ecx, DWORD PTR [eax+edx+ ecx, DWORD PTR _bgp4$[ebp+ edx, DWORD PTR [ecx+ eax, DWORD PTR _bgp5$[ebp+ ecx, DWORD PTR [edx+ecx+ ecx, DWORD PTR _bgp5$[ebp+ ecx, DWORD PTR [eax+ edx, DWORD PTR _bgp6$[ebp+ ecx, DWORD PTR [ecx+eax+ ecx, DWORD PTR _bgp6$[ebp+ eax, DWORD PTR [edx+ ecx, DWORD PTR _bgp7$[ebp+ ecx, DWORD PTR [eax+edx+ ecx, DWORD PTR _bgp7$[ebp+ DWORD PTR _bgp7$[ebp]
討論的一樣,包含虛擬繼承的時候,也可以將基類成員成員指針轉換為派生類成員函數指針,如可以bgp1 = lgp1,但是不能講派生類成員函數指針轉換為基類成員函數指針。