2013-02-01 94 views
10

是的,我知道*是一个指针。这不是我说的。在我的一个程序中,我设置了一个断点,我注意到在汽车中有一个变量__vfptr,其值为0x000007feed210a00__vfptr类型的`*`是什么意思?

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

编辑:我使用Visual Studio 2010中

+0

请你能发表确切的代码行吗? –

+1

你使用什么调试器? – Necto

+1

'__vfptr'似乎表示一个指向虚函数的指针。调试器可能无法解决那里的确切类型。 –

回答

11

__vfptr包含Virtual method table,它包含了允许动态的遗产绑定信息。

其中的信息将包括像function pointers这样的事情来解决virtual functions和关于班级和它的父母的信息。

+2

它包含了很多moe。 –

5

答案显然依赖于实现,并且正式涉及您的调试器,而不是C++。然而,在实践中,_vptr的一些变体是指向_vtable的指针的标准(在通常的意义上,而不是由正式标准定义的意义上),其名称依次包含各种信息这是解决虚拟功能和RTTI所必需的。所以_vptr是一个指针表,偏移量表和其他许多不同的东西的指针。调试器可能只是避免给这个目标命名或描述其结构。