,比如我有兩個 「intefaces」 和class類型:C++中虛擬表的結構是什麼?
class IPlugin
{
public:
virtual void Load(void) = 0;
virtual void Free(void) = 0;
};
class IFoo
{
public:
virtual void Foo(void) = 0;
};
class Tester: public IPlugin, public IFoo
{
public:
Tester() {};
~Tester() {};
virtual void Load()
{
// Some code here
}
virtual void Free()
{
// Some code here
}
virtual void Foo(void)
{
// Some code here
}
};
實際上有Tester
類型的實例是什麼結構vtab?而如何將dynamic_cast
操作行爲(我的意思是dynamic_cast
運營商將如何掃描vtab爲有效的引用類型皈依)表達:
Tester* t = new Tester();
IPlugin* plg = dynamic_cast<IPlugin*>(t);
IFoo* f = dynamic_cast<IFoo*>(plg);
提前感謝!
看看這裏http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/ – DumbCoder 2011-05-03 11:01:15
虛擬函數調用的實現並沒有在C++標準中定義。對於所有編譯器和編譯器版本,您都不會得到正確的答案。 – harper 2011-05-03 11:13:36
@DumbCoder:感謝您的鏈接,但事實證明,我的問題沒有普遍的答案 – 2011-05-03 11:45:16