const 修饰成员函数,对象,不能修改的意思。
1.变量
const不可以作为左值,在其生存周期内不能被赋值(自己赋值给自己也不行)。
const类型变量可以作为右值复制给去掉const修饰的同类型变量。
如:
const char a;
char b =a;//OK
const char* a
char* const b;
char* c=a;//ERROR
char* c=b;//OK
2.成员函数
const 修饰函数的时候,函数必须是成员函数,是指此const函数不会改变对象的成员变量的值。
3.常量与引用
非const型引用只能引用一个左值变量
const型引用可以引用常量
如:
//某函数定义如下:
int& AClass::f(int& i)const
{
return i;
};
//调用函数
AClass a;
a.f(1);
//上述代码有两个错误
//1 参数为非const引用,所以实参不能直接用常量赋值
//2 函数为const函数,所以返回值也是const类型,但是本函数的返回值类型是非const,所以也会报错
//所以重新上述函数及调用为
const int& AClass::f(const int& i)
{
return i;
}
AClass a;
int n=1;
f(n);