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

void p(int x ,int y) const
{
i = x
}

它说程序会报错,这是为什么?x能被赋值,i就不能?const在这个位置究竟是什么限制?限制大括号里面的变量都不能改变?还是都不能被赋值?

红颜莎娜
浏览 602回答 3
3回答

慕姐4208626

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的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。

慕田峪4524236

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

慕姐8265434

const修饰函数除函数内部变量,包括形参以及内部定义变量外,其他变量都无法修改值
打开App,查看更多内容
随时随地看视频慕课网APP