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的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。
另外呢,要大胆的使用const,这将给你带来无尽的益处,不过前提是你必须搞清楚原委,而且不要轻易的将函数的返回值类型定为const;!const用法可以百度一下……有不懂的可以Hi我!
参考资料:http://baike.baidu.com/view/1065598.htm#sub5048429
const修饰函数
除函数内部变量,包括形参以及内部定义变量外,其他变量都无法修改值
函数带const,说明这个函数是常成员函数,即是一个“只读”函数,在函数体中不能直接或间接的更改数据成员的值,即自己不能更改,同时也不能调用那些能引起数据成员值变化的成员函数,只能调用const成员函数。。i是不是数据成员啊。。