深度探索C++对象模型中的一个小错误 顺带散分了

就想叫yoko 2011-06-21 10:43:12
//某个foo.h 头文件, 从某处含入
extern float x;

//程序员的 Point3D.h 文件
class Point3d
{
public:
Point3d( float, float, float );
// 问题 : 被传回和被设定的 x 是那一个 x 呢
float X() const { return x; }
void X( float new_x ) const { x = new_x }
// ...
private:
float x, y, z;
};


3.1节

这里void X( float new_x );函数使用了const
莫非作者是想进一步说明以前的编译器是把这个x解析为外部extern的这个x
但是整个小节并没有对这个给x赋值的函数做说明呀
很容易让人产生误解
后面几次写Point3d的定义不是只出现X()就是把2个const都拿掉了..
...全文
184 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
独酌逸醉 2011-07-01
  • 打赏
  • 举报
回复
kevinjean 2011-06-30
  • 打赏
  • 举报
回复
编译都过不去,x用的就是自己的成员变量,要用全局的要加“::”吧,
shifang1988 2011-06-27
  • 打赏
  • 举报
回复
看不懂啊!
kongyanmin 2011-06-22
  • 打赏
  • 举报
回复
jjjjjjjfffffffff
就想叫yoko 2011-06-21
  • 打赏
  • 举报
回复
呵呵
事实上我在帖子中也说了这个问题
但是作者一直是用get那个函数来说事
那么这个set函数怎么也应该说明一下吧
[Quote=引用 12 楼 we_sky2008 的回复:]
作者是为了说明很久以前的编译器,如果数据成员x写在成员函数的后面,在成员函数中对x的解析并不是在整个类域中,而是考虑出现之前的文本中的名字x,也就是全局域中x,因而,在const成员函数中解析出来的x是全局的x,所以并没有修改类的数据成员x,如果解析出来的是类数据成员x,则会编译出错,因为const成员函数不能修改非mutale数据成员,
因此,很久以前的类数据成员都是写在最前面,就是一种防范措……
[/Quote]
cento123 2011-06-21
  • 打赏
  • 举报
回复
这本书不要再看下去了!--基础都没掌握的作者写的,想把自已搞神经吗?
ryfdizuo 2011-06-21
  • 打赏
  • 举报
回复
jf~
机智的呆呆 2011-06-21
  • 打赏
  • 举报
回复
awsqsh 2011-06-21
  • 打赏
  • 举报
回复
书摆桌子上一年了,还没有敢看啊,,,道路漫长也,,
谁学逆向工程 2011-06-21
  • 打赏
  • 举报
回复
祝你好运
c_losed 2011-06-21
  • 打赏
  • 举报
回复
淡定路过
木看过这书。。。
we_sky2008 2011-06-21
  • 打赏
  • 举报
回复
作者是为了说明很久以前的编译器,如果数据成员x写在成员函数的后面,在成员函数中对x的解析并不是在整个类域中,而是考虑出现之前的文本中的名字x,也就是全局域中x,因而,在const成员函数中解析出来的x是全局的x,所以并没有修改类的数据成员x,如果解析出来的是类数据成员x,则会编译出错,因为const成员函数不能修改非mutale数据成员,
因此,很久以前的类数据成员都是写在最前面,就是一种防范措施。
xiaoguangzaia 2011-06-21
  • 打赏
  • 举报
回复
JJJJJFFFFF
  • 打赏
  • 举报
回复
ouyh12345 2011-06-21
  • 打赏
  • 举报
回复
这个const明显错误,接分了
鸟辉 2011-06-21
  • 打赏
  • 举报
回复
tompaz 2011-06-21
  • 打赏
  • 举报
回复
lz很细心,看过这书,但是没注意这细节
鸟辉 2011-06-21
  • 打赏
  • 举报
回复
只为接分而来。。
toadzw 2011-06-21
  • 打赏
  • 举报
回复
哈哈,这几天也在看,应该是一个问题吧;没有太在意
luciferisnotsatan 2011-06-21
  • 打赏
  • 举报
回复
void X( float new_x ) const { x = new_x }
要不就是作者多打了个const,要不就是忘了说这么做是有问题的。
加载更多回复(14)

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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