【发布时间】:2010-11-25 21:37:03
【问题描述】:
更新:将析构函数示例替换为直接方法调用示例。
嗨,
如果我有以下代码:
class a
{
public:
virtual void func0(); // a has a VTable now
void func1();
};
class b : public a
{
public:
void func0() { a::func0(); }
void func2();
};
- B 中是否有 VTable? B 没有虚函数,但从 b::func0() 调用 a::func0()
- func1 是否驻留在 VTable 中?它不是虚拟的。
- func2 是否驻留在 VTable 中?
- 如果 b::func0() 中没有 a::func0() 调用,上述答案会不会有所不同?
谢谢
【问题讨论】:
-
如果你在这些问题中告诉我你正在使用什么编译器,我会很好。虚拟表是特定于实现的,尽管正在努力使其格式标准化。
标签: c++ class inheritance virtual vtable