Cpp学习——顶层const和底层const
397 字
2 分钟
Cpp学习——顶层const和底层const
- 1Cpp学习——顶层const和底层const本文
顶层const
顶层const表示:对象本身不能被修改
const int a; // a不能被修改int* const p; // 指针p本身不能被修改底层const
底层const表示:指针、引用指向的对象不能被修改
const int* p; // 指针p指向的对象不能被修改int a = 10;const int& ref = a; // ref引用的对象不能被修改判断底层const还是顶层const
const在*左边,表示指针指向的对象为const,属于底层constconst在*右边,表示指针本身为const,属于顶层const
一句话方法:从右往左读类型
const int* p1; // p1是指针,指向int对象,这个对象是constint* const p2; // p2是const的,而且他是指针,指向int对象拷贝时的区别
普通值拷贝时通常会忽略掉顶层const
const int a = 10;int b = a; // 正确:b 是一个新的、非 const 的 int指针转换时不能忽略底层const
const int x = 10;const int* p1 = &x;
// int* p2 = p1; // 错误:丢失底层 const反过来,你可以添加底层const
换句话说,你可以随意地添加底层const作为权限限制,但是你不能随意取消这个权限限制。一句话:请神容易送神难
函数参数中的影响
按值传导时,形参的顶层const不属于函数类型
void func(int);void func(const int); // 与上一条是同一个函数声明但底层const是函数类型的一部分
void func(int*);void func(const int*); // 不同的重载文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Cpp学习——顶层const和底层const
https://blog-zeta-seven-36.vercel.app/posts/cpp-learn-const/








