const

来源:互联网 发布:tpshop开源商城源码 编辑:程序博客网 时间:2024/05/21 07:09

       const 限定符在c++中是只读,即不能被改变。

1.const 与引用

   对常量的引用不能被用作绑定的对象,例如

const int a=1;
int c=2;const int &b=a;  //把引用绑定在const常量对象
const int &d=c;  //把引用绑定在普通对象
b=3; //错误,试图修改绑定的对象
d=3; //错误,同上
    在初始const引用时允许用任意表达式作为初始值,只要该表达式的结果能转换成引用类型。但不能通过const引用来改变其所引用的值。例如

int i=2;const int &j=i;  //正确,j是常量,但j不能改变i的值int &k=i;  //错误,k不是常量

2.const与指针

         把*放在const之前即说明常量指针。由于指针是对象,所以其必须初始化,一旦初始完成,其指向的值就不能改变。指针常量则是其所指向的地址为常量,其地址里的数据可以改变。

3.顶层const与底层const

       顶层const表示指针本身就是个常量,强调是自身。底层const表示指针所指向的对象是常量,强调是他人。所以用于声明引用的const都是底层const。一般地,常量指针是顶层const,指针常量是底层const。

       比较明显的区别是对象的拷贝。若是顶层const则执行对象的拷贝不受影响。若是底层const,拷入与拷出的对象必须具有相同的底层const,或者两个数据类型必须能转换。例如

int b=0;const int &a=b;int *p=a;    //错误,p并没有底层const含义


1 0
原创粉丝点击