Inside The c++ Object Model"勘误"

帅得不敢出门
博客专家认证
2008-08-28 12:29:51

虚则勘误,实则提问交流,故加上"",不知是否措词适当,若"勘误"不妥只能请版主代为修改了.
翻了一遍此书,发觉疑问颇多,虽则侯捷先生已经更正不少,但书中似还有几个令人不解之处,特发上来与大家交流下.
1.
P129
protected:
.....
float x,y,z;
然后是
P130
printf("%p",&Point3d::x);//protected的却直接访问
............
这是一处,另加上我的一个疑问:如果前面是public的,后面输出地址用cout为什么会与printf输出data member地址结果不一样(我用的是vs2005

与Mingw测试),cout输出都是1?


2.
P176
最后一句:对一个vitrual member function取其地址,所获得的只是一个索引值
P177
...
virtual float z();
........
&Point::z();//这里vs2005得到的却是一个地址,而MinGW会有奇怪的结果,也许是编译器实现所致吧

3.
P212
第一段代码
this->z = rhs._z//似乎应该为this->_z=z;


4.
P250
代码
void*
vec_new(
........
} //这里似乎应该对应')'

...全文
112 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
freshairfly 2008-10-16
  • 打赏
  • 举报
回复
我来说个,翻译有点问题的

P195,关于“虚拟规格中const的存在”。“不把函数声明为const,意味着该函数不能获得一个const reference或const pointer”
这句话翻译有误,原文是:
“Not declaring a function const means the function cannot be called by a const reference or const pointer argument at least not without resorting to a casting away of the const.”

不把函数声明为const,意味着不通过类型转换不能被一个const引用或者const指针调用。
帅得不敢出门 2008-08-28
  • 打赏
  • 举报
回复
试过了,似乎cout无法正确输出类的非static数据成员地址
xkyx_cn 2008-08-28
  • 打赏
  • 举报
回复
cout你得指定一下类型,比如强制转换为int*

[Quote=引用 2 楼 zmlovelx 的回复:]
引用 1 楼 xkyx_cn 的回复:
好,你可以出门了


星星这么多怎么不帮我问答下cout与printf输出数据成员地址不同的原因.
[/Quote]
帅得不敢出门 2008-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xkyx_cn 的回复:]
好,你可以出门了
[/Quote]

星星这么多怎么不帮我问答下cout与printf输出数据成员地址不同的原因.

xkyx_cn 2008-08-28
  • 打赏
  • 举报
回复
好,你可以出门了
baihacker 2008-08-28
  • 打赏
  • 举报
回复
本来就有很多种实现...
书上在后面说了好些关于多重继承的问题...有点复杂.
xkyx_cn 2008-08-28
  • 打赏
  • 举报
回复
我在2008上也没编过,MS的编译器在处理虚表上与其他编译器不同


[Quote=引用 5 楼 zmlovelx 的回复:]
更正下,是vs2005下强制转换时编译不过.

其他编译器强制转换后还是可以输出地址的. 谢谢xkyx_cn
[/Quote]
帅得不敢出门 2008-08-28
  • 打赏
  • 举报
回复
更正下,是vs2005下强制转换时编译不过.

其他编译器强制转换后还是可以输出地址的. 谢谢xkyx_cn

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧