顶层const和底层const

51 篇文章 1 订阅

顶层const(top-level const)和底层const(low-level const)是C++中用于描述const修饰符的两个概念。它们有着不同的含义和应用场景。顶层const---* 号的右边,底层const---* 号的左边。

“左定值,右定向”

  1. 顶层const:

    • 顶层const表示指针或变量本身是常量。它是指针或变量的一部分,限制了指针或变量的修改。

    • 顶层const可以用于指针类型或非引用类型变量。

    • 顶层const的修饰可以在声明时进行,也可以通过类型别名或模板参数来传递。

    示例:

    const int num = 10;  // 顶层const,num是一个常量不能修改
    int* const ptr = #  // 顶层const,ptr是一个指向常量的指针,指向的对象不能修改

  2. 底层const:

    • 底层const表示指针或引用所指向的对象是常量。它是指针或引用所指向的对象的一部分,限制了对象的修改。

    • 底层const只能用于指针类型或引用类型。

    • 底层const的修饰可以在声明时进行,也可以通过类型别名或模板参数来传递。

    示例:

    int num = 10;
    const int* ptr = #  // 底层const,ptr是一个指向常量的指针,指向的对象不能修改
    int* const ref = #  // 顶层const,ref是一个指向变量的常量指针,指针本身不能修改

顶层const和底层const的区别在于它们所修饰的是指针或变量本身还是所指向的对象。顶层const表示指针或变量本身是常量,而底层const表示指针或引用所指向的对象是常量。这两种const修饰符可以组合使用,形成不同的const类型,以满足不同的需求。

举例说明:

const int a;int const a;const int *a;int *const a;  
  • int const a和const int a均表示定义常量类型a。

  • const int *a,其中a为指向int型变量的指针,const在 * 左侧,表示a指向不可变常量。(看成const (*a),对引用加const)

  • int *const a,依旧是指针类型,表示a为指向整型数据的常指针。(看成const(a),对指针const)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

What’smean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值