什么类型`*`对__vfptr意味着什么?

时间:2013-02-01 14:23:38

标签: c++ visual-studio pointers visual-studio-debugging

是的我知道*是一个指针。那不是我在说什么。在我的一个程序中,我设置了一个断点,我注意到在autos中有一个变量__vfptr,其值为0x000007feed210a00

然而在类型下,它只是说*就是这样。我的程序中的所有其他指针都有unsigned char*some::namespace::Frame*int*等类型。这些是有意义的,因为指针直接绑定到特定的类或数据类型。但我不知道*可能是,是否只有普通的指针类型?

编辑:我正在使用Visual Studio 2010。

2 个答案:

答案 0 :(得分:11)

__vfptr包含Virtual method table,其中包含允许动态绑定继承的信息。

其中的信息将包括function pointers来解决virtual functions以及有关课程及其父母的信息。

答案 1 :(得分:5)

答案显然取决于实现,并且正式涉及调试器,而不是C ++。然而,在实践中,_vptr的某些变体或多或少标准(在通常意义上,而不是由正式标准定义的意义上)指向_vtable的指针,而这又包含解析虚函数和RTTI所需的各种信息。所以_vptr是指向指针,偏移和许多其他不同事物的指针。调试器可能只是避免给这个目标命名或描述它的结构。