2011-06-23 69 views

回答

11

它没有类型。它是标准未指定的实现细节; 它不是语言的一部分。

请注意,C++并不是说必须有虚拟表或虚拟“指针”(尽管这是C++工具链中最常见的RTTI实现)。

此外,你的分析是错误的。例如在GCC中,通常每个对象都会获得一个vptr,该vptr指向该对象类型的相关虚拟表:object has pointer,type has table。

+0

噢,你的答案是没有乐趣:( – Blindy

+0

@Blindy:。至少它不是完全误导 –

+0

喜 按照我的理解虚函数表的一流水平,形成 正如你说的,“在海湾合作委员会,通常每个对象得到一个指向该对象类型的相关虚表的vptr:object has pointer,type has table“。 如果每个对象都有自己的vptr并且都指向同一个vtable,那么需要创建不同的vptr指针。我们可以创建一个静态类级别vptr –

2

即使大多数实现使用它,该标准也不能保证虚拟表指针的存在。

因此,它没有类型。它只是一个指针数组。

+1

它也不是一个指针数组。它在C++结构方面没有任何表示。 –

1

它具有编译器相关类型,只要编译器理解它就可以是任何东西。由于该语言没有提及任何关于vptr的内容,程序员都没有在代码中使用它,所以编译器可以自由创建任何类型的来实现运行时多态性。 类型不必与C++语言一致。

相关问题