函数名和{}中间的const是用来修饰什么的?

zjumty 2007-04-13 10:06:33
最近在学C++,在书上看到有类似这样的语句:
const ResultType func_name(const Type &arg) const { .... }

一个语句中3个const.
第一个const用来修饰返回值
第二个const用来修饰参数值
那么第三个const用来修饰什么呢?

PS. 感觉C++比Java复杂多了!
...全文
445 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lisheng053758 2007-04-17
  • 打赏
  • 举报
回复
3.func_name(……) const :方法不可以修改调用它的对象的成员
lisheng053758 2007-04-17
  • 打赏
  • 举报
回复
第一个const 说明函数的返回值为常ResultType类型
第二个const 说明函数的参数为常Type的引用
第三个const 说明 func_name函数是一个类的const成员函数
只有const成员函数可以被const对象调用
编译器不容许const对象调用非const成员函数
飞哥 2007-04-17
  • 打赏
  • 举报
回复
const在拿,哪的值不让改就是了
guanwl 2007-04-16
  • 打赏
  • 举报
回复
那个const就象是java中的final函数.
不比java复杂呀.
你不会没用过java的final关键字吧.
balloonpig 2007-04-14
  • 打赏
  • 举报
回复
1.func_name(const Type &arg):在函数作用域中,不可以修改arg
2.const ResultType func_name(……):返回值不可以被修改
3.func_name(……) const :方法不可以修改调用它的对象
goodgod105 2007-04-13
  • 打赏
  • 举报
回复
mark
zjumty 2007-04-13
  • 打赏
  • 举报
回复
多谢各位!!
lidongri 2007-04-13
  • 打赏
  • 举报
回复
const ResultType func_name(const Type &arg) const { .... }
==========================================================
const ResultType:
函数返回一个const量
const Type &arg
函数内部对实参认为是const量,不修改其值
const { .... }
用于类的成员函数,说明成员函数不修改类的数据成员,okokok

xlbdan 2007-04-13
  • 打赏
  • 举报
回复
const ResultType func_name(const Type &arg) const
这个是一个返回值为const ResultType 类型的const成员函数

三个const的作用不一样

第一个是修饰返回值的,返回的是一个const ResultType ,也就是说,返回值不可以修改
例如
ResultType a,b; //定义两个对象
a.func_name()=b; //a.func_name()的返回值是ResultType类型的常对象,也
//就是一个const ResultType 所以对它进行赋值,a.func_name()=b,
//是非法的

第二个const是用来修饰形参的,const Type &arg表示arg是实参的一个常引用,那么在func_name这个函数里对arg进行任何修改都将是错误的


第三个const是用来表示该成员函数不能修改数据成员的,例如这个类里有一个成员叫int data;
那么
const func_name func_name() const
{
data++; //这是非法的,const成员函数不可以对数据成员做修改
}
walkingstick 2007-04-13
  • 打赏
  • 举报
回复
LZ,楼上的高手讲的很详细了哦~~~~~~~~
todototry 2007-04-13
  • 打赏
  • 举报
回复
const ResultType func_name(const Type &arg) const { .... }
==========================================================
const ResultType:
函数返回一个const量
const Type &arg
函数内部对实参认为是const量,不修改其值
const { .... }
用于类的成员函数,说明成员函数不修改类的数据成员,okokok
iu_81 2007-04-13
  • 打赏
  • 举报
回复
几点规则:

a.const对象只能访问const成员函数,而非const对象可以访问任意
的成员函数,包括const成员函数.
b.const对象的成员是不可修改的,然而const对象通过指针维护的对象却
是可以修改的.
c.const成员函数不可以修改对象的数据,不管对象是否具有const性质.它在
编译时,以是否修改成员数据为依据,进行检查.
e.然而加上mutable修饰符的数据成员,对于任何情况下通过任何手段
都可修改,自然此时的const成员函数是可以修改它的…
ouyh12345 2007-04-13
  • 打赏
  • 举报
回复
在函数内,不应改变参数的内容
wangzhangyong411 2007-04-13
  • 打赏
  • 举报
回复
第一个是修饰返回值是个不能被变化的

第二个是说,参数是不能被变化的

第三个是说 如果这个函数在类里面 那么这个类里面的值不能被变化

SF

iu_81 2007-04-13
  • 打赏
  • 举报
回复
修饰类成员函数

33,311

社区成员

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

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