为了账号安全,请及时绑定邮箱和手机立即绑定

求解释~const在这里是什么意思?什么含义?

求解释~const在这里是什么意思?什么含义?

红颜莎娜 2021-11-24 21:15:29
void p(int x ,int y) const{i = x}它说程序会报错,这是为什么?x能被赋值,i就不能?const在这个位置究竟是什么限制?限制大括号里面的变量都不能改变?还是都不能被赋值?
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

void p(int x ,int y) const,i未在函数体内定义,也不是参数,所以很明显你这属于类成员函数中const的使用 即限制函数类型,就是形如:void fun() const; 此类的将const放在函数体后。 这个时候const的含义是无法修改数据成员。例如有个私有成员area,而我们需要使用,可以定义函数void getarea();这个时候在函数后面加上const,就是void getarea() const;是很好的选择,防止你不小心改变了area的值。
总的来说 如果一个成员函数的不会修改数据成员,那么最好将其声明为const,因为const成员函数中不允许对数据成员进行修改,如果修改,编译器将报错,这大 大提高了程序的健壮性。

你这里i=x明显试图改变i的值,当然报错了!
所以说定义const成员函数往往是不错的选择。因为我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。


查看完整回答
反对 回复 2021-11-29
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

函数带const,说明这个函数是常成员函数,即是一个“只读”函数,在函数体中不能直接或间接的更改数据成员的值,即自己不能更改,同时也不能调用那些能引起数据成员值变化的成员函数,只能调用const成员函数。i是不是数据成员啊。

查看完整回答
反对 回复 2021-11-29
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

const修饰函数
除函数内部变量,包括形参以及内部定义变量外,其他变量都无法修改值

查看完整回答
反对 回复 2021-11-29
  • 3 回答
  • 0 关注
  • 523 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信