“顶层const”和“底层const”的思考

本文详细解释了顶层const和底层const的概念,并通过实例展示了它们的应用场景。顶层const是对对象本身的限制,而底层const则针对的是指针或引用类型所指向的对象。文章还强调了在使用底层const进行赋值时的注意事项,即目标对象也必须具有底层const属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“顶层const"顾名思义就是对对象本身的一种限制,而使得对象本身为常量。

例:

 

const int a = 1; //对对象本身做了限制,变为常量,是“顶层const”

 

同理,”底层const"通常与指针和引用等复合类型的基本类型有关,那是对指针、引用类型所牵连的对象的限制,那是对底层的限制。

例:

 

const int a = 1;
const int *p = &a; //对存储的a对象进行了限制,这是“底层const”

 

归根结底,限制的范围不同,有复合类型既可以是“顶层const”也可以是”底层const",比如指针。

例:

const int a = 1;
const int *r1 = &a;
const int *const r2= &r1; //对r2和r1都作了限制,即是“顶层const”又是“底层const”

注:在使用“底层const"对象进行赋值时,要赋值对象必须同时具有“底层const"

 

例:

 

const int a = 1;
const int *p = &a;
int *p1 = p; //p具有“底层const”将引发错误

因为p1是int型指针,必然可以对p1所存储的对象作出改变,例

 

 

*p1 = 1; 

然而,p1所存储的对象为a,a是const常量,与之有矛盾。所以“底层const”只能赋值给“底层const"。

 

转载于:https://www.cnblogs.com/vczf/p/6823267.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值