【发布时间】:2011-05-03 10:58:40
【问题描述】:
例如,我有两个“接口”和类类型:
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
}
};
vtab 实际上有什么结构,例如Tester 类型? dynamic_cast 运算符如何在表达式中执行(我的意思是 dynamic_cast 运算符将如何扫描 vtab 以进行有效的引用类型转换):
Tester* t = new Tester();
IPlugin* plg = dynamic_cast<IPlugin*>(t);
IFoo* f = dynamic_cast<IFoo*>(plg);
提前致谢!
【问题讨论】:
-
虚函数调用的实现在C++标准中没有定义。您不会得到对所有编译器和编译器版本都正确的答案。
-
@DumbCoder:谢谢你的链接,但事实证明我的问题没有共同的答案