C++学习笔记01-顶层const和底层const

顶层const

定义:指针本身是一个常量,就是说,常量指针,p是常量,*p是可修改的

底层const

定义:指针指向的对象是一个常量,就是说*p是常量,而p是变量,*p只读,p可以修改

判断底层和顶层const

最主要是用黄体字的定义去判断,指针和引用比较类似,都差不多
举个例子:

int i = 0 ;
int * const p1 = &i;定义了一个常量指针,是顶层const
const int *p2 = &i; 定义了一个指针,*p2是只读,p2是变量,指针指向的对象是常量,所以是底层const

顶层const和底层const的意义:
C++:我不管这个数据是不是顶层const,复制数据的时候,两个变量一定要都要是底层const
比如:

const int value = 1;
const int & a = value;(a指向的对象是常量)都具有底层const,所以把a绑定到value上没有问题(a指向了value)
int b = a;b是没有底层const,a是具有底层const,将导致编译错误

典型的编译报错:丢失标识符const
在这里插入图片描述
我以前写的一篇文章也有这个内容的,
error: binding reference of type int& to const int discards qualifiers

猜你喜欢

转载自blog.csdn.net/weixin_46028606/article/details/106921126