BaseClass *pBase;
DerivedClass *pDerived;
AnotherClass *pAnother;
pBase = new DerivedClass();
pDerived = (DerivedClass *) pBase;
pAnother = new AnotherClass();
Base class和DerivedClass里面有个虚函数Calculate(int i),AnotherClass里面也有个函数Calculate(int i)。
pBase->Calculate(i);
000000013F305577 mov rax,qword ptr [pBase]
000000013F30557C mov rax,qword ptr [rax]
000000013F30557F mov edx,dword ptr [i]
000000013F305583 mov rcx,qword ptr [pBase]
000000013F305588 call qword ptr [rax+8]
pDerived->Calculate(i);
000000013F3055BF mov rax,qword ptr [pDerived]
000000013F3055C4 mov rax,qword ptr [rax]
000000013F3055C7 mov edx,dword ptr [i]
000000013F3055CB mov rcx,qword ptr [pDerived]
000000013F3055D0 call qword ptr [rax+8]
pAnother->Calculate(i);
000000013F305607 mov edx,dword ptr [i]
000000013F30560B mov rcx,qword ptr [pAnother]
000000013F305610 call AnotherClass::Calculate (13F30114Fh)