C++学习--顶层Const与底层Const

const关键字用来标明一个对象是不可更改的,由于其一旦创建后不可更改,所以需要在创建时对const对象进行初始化。

顶层const(指针常量)用来标明一个变量其本身是一个不可更改的常量。内置类型的const为顶层const。对于指针,被顶层const修改后,不可更改指针指向的对象

const int i = 1;//顶层const
int *const p = &i;//顶层const,不可更改p指向的对象

底层const(常量指针)用来标明一个指针或引用所指向的对象是一个不可更改常量。对于指针和引用,被底层const修改后,不可通过指针或引用修改指针指向的对象值。(可以通过其他方式修改其值)

int i = 1;
const int *p = &i;//底层const
*p = 3;//错误,不可通过被const修饰的指针修改对象值
i = 3;//正确,const指针只影响修饰的对象

执行拷贝操作时,顶层const对于拷贝操作无影响
const int i = 1;
int m = i;//i具有顶层const对于拷贝操作无影响。
但是底层const不可忽略。执行拷贝操作时,拷入与拷出对象必须具有相同的底层const,或者两对象的数据类型必须能够转换。一般来说,非常量可以转换成常量,反之不行。
int i = 1;
const int *p = &i;//正确,非常量转换为常量
int *q = p;//错误,常量不可转换为非常量
const int *r = p;//正确,等号两边都具有底层const


参考:《C++primer(第五版)》

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值