const的用法
.
.
.
public:
seqlist(void);
int listsize(void) const;
int listempty(void) const;
.
.
在这个程序段里面出现的const是什么作用?在原著中是这样说的“const表示
传递的是参数的地址,但并不允许改变参数值”,我对这句话不明白,请各位解释一下,其中提到的“不允许改变参数值”指的是什么?
问题点数:0、回复次数:9Top
1 楼Goooder(Goooder)回复于 2003-05-04 02:32:13 得分 0
int listsize(void) const; int listempty(void) const;叫做const函数,const函数表示函数中不能对类的成员变量进行修改,不能调用非const函数。
可以这样理解:const函数纯粹是为了return某个值,而对执行它的上下文环境不做任何修改,是没有副作用的函数。
Top
2 楼mercury1231(为论文而拼搏,老板就是上帝)回复于 2003-05-04 03:01:21 得分 0
那么const 能够放在listsize(void)前边吗?就是int const listsize(void);这样?Top
3 楼bigtea(企鹅)回复于 2003-05-04 03:06:22 得分 0
Goooder(Goooder) 说得有道理,可以看这里
http://expert.csdn.net/Expert/TopicView3.asp?id=1731583Top
4 楼bm1408(向va_list学习~不用VC好多年~)回复于 2003-05-04 07:51:05 得分 0
这是一个常成员函数!C++引内的目的就是限定用户的误操作!
这个函数可以调用非CONST函数,上面的兄弟的话,好像有点错误吧!
原话应该是这样的:类的常成员函数不能改变成员变量的值,也不能调用该类中没有CONST修饰的成员函数,静态成员函数不能说明为常成员函数,但是静态成员变量,可能说明为常成员变量!
有个限定条件,是这个的的!
当然它可以修改全局的变量和调用strcpy()这样的函数了!Top
5 楼messagebox(想飞的感觉)回复于 2003-05-04 08:28:36 得分 0
const成员函数它隐含的this指针是指向const对象的指针,所以非const对象就不能够调用它,
原因很明显指向非const对象的指针不能赋值给指向const对象的指针Top
6 楼mfs(玩命蚂蚁)回复于 2003-05-04 09:53:42 得分 0
如果你希望某个函数不要修改某个值如显示函数等,但你又不能保证自己以后忘了去用它修改成员变量的值,那么最好的办法就是在申明和定义函数的时候在后面加上const就可以了。Top
7 楼wingfiring(非典型秃子)回复于 2003-05-04 10:13:15 得分 0
const成员函数只是不能修改this所代表的那个对象,可以改变其它对象,甚至是和当前对象同一个类的对象,例如:void A::fun(A &a1) const{a1.m1 = 10;}这样的语句是完全合法的,但是void A::fun(A &a1) const{m1 = 10;}则是非法的,因为m1是this对象的成员,不能修改。在const成员函数内也不能调用本对象的非const成员函数,也不能把this作为非const成员调用其它函数。例如:
void gfun(A &a); void A::fun() const { gfun(*this);}
是非法的,因为gfun的参数不是const类型。
所以 messagebox(冷也好热也好活着就好)的话说反了,应该是他不能调用非const的函数,非const调用const当然没问题。Top




