什么是顶层 const什么是底层const

顶层 const 和底层 const 的区别,核心在于这个 const 修饰的是"对象本身",还是"对象所指/所引用的那个东西"。

顶层 const(top-level const)

const 修饰的是变量本身,表示这个对象自己不能被修改。

cpp 复制代码
const int a = 1;        // a 本身是 const,顶层 const
int* const p = &n;      // p 这个指针本身是 const(不能改指向),顶层 const
const int b = 2;        // b 本身是 const,顶层 const

对指针来说:

  • int* const p:p 不能改指向,但 *p 可以改 → 顶层 const。

  • const int* p:p 可以改指向,但 *p 不能改 → 这是底层 const,见下。

底层 const(low-level const)

const 修饰的是指针/引用所指向的那个对象,表示通过这个指针/引用不能修改目标。

cpp 复制代码
const int* p = &n;      // 指向 const int,*p 不能改,底层 const
const int& r = n;       // 引用 const int,通过 r 不能改,底层 const
int const* q = &n;      // 同上,底层 const

指针的经典记法:const 在 * 左边 → 底层 const(指向的东西是 const);const 在 * 右边 → 顶层 const(指针自己是 const)。

cpp 复制代码
const int* p1;   // 底层 const:*p1 不能改
int* const p2;   // 顶层 const:p2 不能改
const int* const p3; // 两者都有:p3 和 *p3 都不能改
复制代码
相关推荐
Eider19982 小时前
python基础语法之并发基础练习
开发语言·python
#麻辣小龙虾#2 小时前
网页布局css中flex+margin的组合布局技巧
开发语言·前端·javascript
云和数据.ChenGuang2 小时前
python和java的try
java·开发语言·python
我是唐青枫2 小时前
Kotlin Inheritance(继承)详解:语法、原理、实战 Demo
开发语言·kotlin
zwc32104320552 小时前
第四周第五天——重构成类
c++·人工智能·opencv·算法·计算机视觉
ly76892 小时前
从 OpenAPI 到多语言 SDK 生成:Java 服务端契约漂移与生成器版本治理
java·开发语言·openapi·java 21·版本兼容·契约漂移·sdk 生成
lqbzlll3 小时前
CVE-2026-91403 排查指南:Java JSSE 信任链漏洞的根因、影响范围和修复步骤
java·开发语言·信任链
CarIise3 小时前
AOP 概念的引入
java·开发语言
凉茶钱3 小时前
多态:从虚函数语法到虚表寻址,一次讲透动态绑定
开发语言·c++·多态