3 回答
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的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。
TA贡献1875条经验 获得超5个赞
函数带const,说明这个函数是常成员函数,即是一个“只读”函数,在函数体中不能直接或间接的更改数据成员的值,即自己不能更改,同时也不能调用那些能引起数据成员值变化的成员函数,只能调用const成员函数。i是不是数据成员啊。
- 3 回答
- 0 关注
- 587 浏览
添加回答
举报