顶层const和底层const
我们都知道,const可以表示的对象如何数据类型,如:算术类型、类、指针等。
例如,指针本身是一个对象,它又可以指向另一个对象。因此,指针本身是不是一个常量以及指针所指向的对象是不是一个常量就是两个独立的问题。所以,所谓
顶层const
所表示的就是指针本身是一个常量,而底层const
表示的是指针所指向的对象是一个常量。
简单来说就是,const 所修饰的变量是常量的话,也就是这个变量不可以改变,那么这个就是顶层const
,顶层const
对任意类型都适用,而底层const
则与指针和引用等复合类型的基本类型部分有关。特例就是指针可以同时具有顶层const
和底层const
。看下面代码来理解一下:
const int ci = 22; //ci的值不能改变,所以就是顶层const
int i = 0;
int *const p1 = &i;//const所修饰的p1不能改变,所以这个是顶层const
const int *p2 = &ci;//这个是底层const,因为p2所指向的ci的值不可以改变
const int *const p3 = p2;
//靠左的是底层const,靠右的是顶层const,所以这个指针同时拥有底层和顶层const
const int &r = ci;//用于声明引用的const都是底层const
这就是我对这个知识的分享啦,有帮助的话给个赞呗。