在閱讀了關於名稱修改的更多信息後,我對vtable感到困惑。 爲前:從C++中的vtable函數解析
class Base
{
public:
virtual void print()
{
}
};
class A : public Base
{
public:
void hello()
{
....
}
void print()
{
}
};
A obj;
obj.hello();
Base* test = new A();
test->print();
按名稱manging obj.hello()
電話後我的理解將被轉換爲類似_ZASDhellov(&obj)
現在
- 如何虛函數將虛函數表被調用?
- 我狂猜
test->__vtable[_ZASDprintv](&test(dynamic cast to derived???))
是正確的? - 如何從vtable中解析函數名稱?
'A :: hello()'不是一個虛函數。 – tkausl
沒有虛函數,因此在你顯示的代碼中沒有vtable。 –
我知道。如果它是一個虛擬函數將如何評估? –