顶层const(c++)

指针:顶层const表明指针本身是个常量,底层const表示指针所指的对象是个常量

顶层const:表示任意对象是常量

int *const p1 = &i; //顶层const指针
const int ci = 42;  //顶层const整型变量

底层const:与指针和引用等复合类型有关

const int *p2 = &ci; //正确 常量对象对p2赋值
const int *p2 = &i; // 正确 变量也可以对p2赋值(隐式转换)
const int *p2 = 32; // 错误 整型数据无法对p2赋值

顶层+底层:指针以及所指的对象都是常量

const int *const p3 = p2;

声明引用的const都是底层const(引用本身是const)

const int &r = ci;

在执行拷贝操作时

  • 顶层const(作为被拷贝对象)不受影响。
  • 底层const:等号左右的对象都需具有底层const资格,或者可以隐式转换,一般来说变量可以转换成常量。
int *p = p3; //错误 p没有底层const资格
p2 = &i; //正确 i是变量,但可以隐式转换
int &r = ci; //错误 r非常量

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值