Chinaunix首页 | 论坛 | 博客
  • 博客访问: 988129
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2367
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

2012年(158)

我的朋友

分类: C/C++

2012-11-20 10:50:54

这个问题就是调试时,在同一个实例的不同成员函数中,所看到的this值竟然不一样


cout出的值是正确的,但调试时watch窗口看到的值不一样。
阅读(2141) | 评论(11) | 转发(0) |
给主人留下些什么吧!~~

网友评论2012-11-20 10:54:04

清风雨
应该显示C实例的this比较好,也就是cout的值。至于详细信息,this的展开可以提供。
我觉得应该算VC8的一个疏忽。

网友评论2012-11-20 10:53:56

Hercules Space
如果实在要论cout和watch为什么可以不一样。个人认为这是一件好事,这样大家又可以明白cout做了什么,watch它的实际作用又是什么。cout<<this,这句代码使用了标准的C++输出流,要注意的是这个编译器实际要作类型检查的,这里的this无论如何都会是类C的实例。这一部分将会是硬编码(或说是静态的)。再回过头看看watch这个很出色的DEBUG窗口,说它出色就在于此,它不光知道this是类C的实例,还会充分的动态解释它。所以说,cout和watch在这里出现了不一致,但要说的是watch窗口属于debugger部分,它为你提供更为细节的信息。

网友评论2012-11-20 10:53:47

周星星
换一种直接的说法也许更好:无论出于什么理由,fb中cout出的字面值都应该等于watch中观察得到的字面值。

网友评论2012-11-20 10:53:39

周星星
我并不是不知道多重继承的实现机制,令我感觉遗憾的是watch中看到的值和cout出的值并不一样。

网友评论2012-11-20 10:53:32

xiaoyueer
test()里this的type为C, 在object offset 0的地方, C,A共用一个起始地址
fb()里this的type为B, 在object offset为4的地方