CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

const的用法

楼主itfuture01(itfuture)2003-05-04 00:59:46 在 C/C++ / C语言 提问

.  
  .  
  .  
  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

相关问题

  • Const 的用法
  • const 用法?
  • const用法
  • const用法?
  • 关于CONST的用法??
  • 简单问题!const用法
  • 请问关于const的详细用法
  • const修饰函数的用法请教
  • const的用法及意义,如 BOOL IsKindOf (const CRuntimeClass *pClass ) const;如何解释
  • 请教:关键字const的含义,用法(c中)

关键词

  • 函数
  • 修改
  • 指针
  • 调用
  • 成员
  • 变量
  • 对象
  • gfun
  • const
  • listsize

得分解答快速导航

  • 帖主:itfuture01

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo