11

是的,我知道 * 是一个指针。这不是我要说的。在我的一个程序中,我设置了一个断点,我注意到在 autos 中有一个__vfptr带有 value的变量0x000007feed210a00

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

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

4

2 回答 2

11

__vfptr包含虚拟方法表,它包含允许在继承中进行动态绑定的信息。

其中的信息将包括解析的函数指针virtual functions以及类及其父类的信息。

于 2013-02-01T14:26:36.863 回答
5

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

于 2013-02-01T14:28:55.627 回答