LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: graydream

const放在后面有什么意思?

[复制链接]
发表于 2005-5-26 15:48:11 | 显示全部楼层
Post by nait
当时很急(急着去考试:-))所有匆匆忙忙灌了一通就走了
其实上面说的不是很准确,准确的说const是修饰this指向的对象的
譬如,我们定义了
class A{
public:
f(int);
};
这里f函数其实有两个参数,第一个是A *const this, 另一个才是int类型的参数
如果我们不想f函数改变参数的值,可以把函数原型改为f(const int),但如果我们不允许f改变this指向的对象呢?因为this是隐含参数,const没法直接修饰它,就加在函数的后面了,表示this的类型是const A *const this。
const修饰*this是本质,至于说“表示该成员函数不会修改类的数据。否则会编译报错”之类的说法只是一个现象,根源就是因为*this 是const类型的

看来兄弟真是深入理解C++了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-26 19:20:43 | 显示全部楼层
nait真厉害,pfpf
回复 支持 反对

使用道具 举报

发表于 2005-5-26 20:42:30 | 显示全部楼层
这个问题也困惑了我,谢谢各位的讨论与指教.
回复 支持 反对

使用道具 举报

发表于 2005-5-27 17:57:18 | 显示全部楼层
Post by kj501
看来兄弟真是深入理解C++了。

汗,我c++只是初学,离深入理解还差的远呢
感觉c++比c复杂了不止一个数量级
路漫漫。。。。。。。。

嗯,一路看下来发现上面还是犯了个小错误 :p
一般没人会定义f(const int)这样的函数,最多会这样f(const int *) :beat  :beat
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表