当前位置: 首页 > news >正文

C++ :顶层const与底层const的区别

顶层const与底层const的区别 

定义与核心区别
顶层 const (Top-level const)底层 const (Low-level const)
作用对象变量本身是常量(不可修改)变量指向或引用的对象是常量(不可修改)
典型场景指针本身不可变、普通变量为常量指针/引用指向的值不可变
是否影响类型不影响类型兼容性(如函数重载)影响类型兼容性(如函数重载、类型转换)
示例 1:指针中的顶层与底层 const
int a = 10;

// 底层 const:指向的值不可变(const 在左侧)
const int* p1 = &a;  // p1 可指向其他地址,但 *p1 不可修改
p1 = &a;             // 合法:修改指针地址
// *p1 = 20;         // 非法:底层 const 禁止修改值

// 顶层 const:指针本身不可变(const 在右侧)
int* const p2 = &a;  // p2 不可指向其他地址,但 *p2 可修改
// p2 = &a;          // 非法:顶层 const 禁止修改指针地址
*p2 = 20;            // 合法:修改指向的值

// 双重 const
const int* const p3 = &a;  // 指针和指向的值均不可变
示例 2:引用中的底层 const
int b = 30;
const int& ref = b;  // 底层 const:通过 ref 无法修改 b
// ref = 40;         // 非法
b = 40;              // 合法:直接修改原始变量
http://www.dtcms.com/a/76411.html

相关文章:

  • 【Linux网络(三)】网络基础套接字
  • 【CXX-Qt】1.5 使用CMake构建
  • 《深入理解AOP编程:从基础概念到Spring实现》
  • C++中std::shuffle 的使用
  • MySQL 多列 IN 查询详解:语法、性能与实战技巧
  • 当 Selenium 的 click() /send_keys()等方法失效时:JavaScript 在 UI 自动化测试中的神奇用法
  • 工作记录 2017-02-06
  • gitlab 提交pr
  • 搭建Nginx
  • springboot第三站(1) web开发引入
  • Docker下载,包含Win、Mac
  • The test of the entire book_《Effective Modern C++》notes
  • Spring Boot集成PageHelper:轻松实现数据库分页功能
  • Linux系统之qrencode工具的安装与基本使用
  • 云安全相关博客阅读(四)
  • 使用静态库动态库也要头文件
  • 【Netty】消息分发处理方式
  • Unity shader管道液体流入并流出效果
  • Spring Boot 静态访问配置属性的解决方案
  • EditRocket for Mac v5.0.2 文本编辑器 支持M、Intel芯片
  • 从信息熵上看图像
  • RISCV虚拟化环境搭建
  • windows主机持久化技术
  • 实用插件推荐 -------- 一个可以将任意语言(python、C/C++、go、java等)的程序转换为汇编语言的小插件
  • 神经网络量化3-全连接层实现量化
  • 12 File文件对象:创建、获取基本信息、遍历文件夹、查找文件;字符集的编解码 (黑马Java视频笔记)
  • Qt动态设置样式,实现样式实时切换
  • IntelliJ 配置文件plugin.xml
  • Vector 的模拟实现:从基础到高级
  • 10、基于osg引擎生成热力图高度图实现3D热力图可视化、3D热力图实时更新(带过渡效果)