首页/新闻资讯/正文详情

const 该放哪:从顶层 const 到 const 成员函数

发布时间:2026/9/24 17:44:52 来源:云帆数科 栏目:资讯中心
const 该放哪:从顶层 const 到 const 成员函数
const在 C++ 里不是「加个修饰」那么简单——放在*左边还是右边,含义完全不同;放在成员函数末尾,改的甚至是隐藏的this指针类型。搞混这两者,轻则编译报错,重则写出自以为只读、其实能改的接口。这篇把const的位置语义、它对函数签名和性能的影响,用代码和真实输出讲清楚。官方文档:cv 限定符(const/volatile)、成员函数1. 引子:const int* 和 int* const 到底谁不能改一句话区分:const紧贴谁,谁就不能改。const int* p:const在*左边,修饰「指向的对象」——*p不能改,p能改(可指向别处)。int* const p:const在*右边,修饰「指针本身」——p不能改,*p能改。const int* const p:两边都有,p和*p都不能改。2. 三种写法,逐个类型实证用std::is_same把三种指针的精确类型钉出来:// demo.cpp — 编译: g++ -std=c++17 -Wall -O2 demo.cpp -o demo#includeiostream#includetype_traitsintmain(){intn=1;constintc=2;constint*p1=c;// 指向 const int 的指针(底层 const)int*constp2=n;// const 指针(顶层 const)constint*constp3=c;// 顶层 + 底层 conststatic_assert(std::is_samedecltype(p1),constint*::value,"");static_assert(std::is_samedecltype(p2),int*const::value,"");static_assert(std::is_samedecltype(p3),constint*const::value,"");std::cout"p1: const int* = "std::is_samedecltype(p1),constint*::value'\n';std::cout"p2: int* const = "std::is_samedecltype(p2),int*const::value'\n';std::cout"p3: const int* const = "std::is_samedecltype(p3),constint*const::value'\n';}p1: const int* = 1 p2: int* const = 1 p3: const int* const = 1用一张图记住位置:const int* p1; 底层 const:指针可变,所指不可变 ↑修饰所指对象 p1 = x; ✓ *p1 = 0; ✗ int* const p2; 顶层 const:指针不可变,所指可变 ↑修饰指针本身 p2 = x; ✗ *p2 = 0; ✓ const int* const p3; 两层都 const ↑所指 ↑指针3. 顶层 const(top-level)与底层 const(low-level)这两个词是理解「为什么 const 影响重载、又不影响另一些重载」的关键:顶层 const:修饰「对象自己」(int* const、const int x)。底层 const:修饰「指针/引用指向的东西」(const int*、const int)。关键规则:函数按值传参时,顶层 const 会被忽略,不构成重载;底层 const 不会忽略,构成重载。

相关推荐

第032篇 面试必问·网易浏览器与渲染原理:浏览器缓存机制,强缓存与协商缓存如何配合(压箱底干货)
第032篇 面试必问·网易浏览器与渲染原理:浏览器缓存机制,强缓存与协商缓存如何配合(压箱底干货)

摘要:本篇复盘 网易 前端开发岗位在 浏览器与渲染原理 方向的真实问法,重点拆 8 道题:限流算法有哪些,各适合什么场景、浏览器缓存机制,强缓存与协商缓存如何配合、浏览器事件模型,事件委托有什么好处。每题按「考察点 → 参考答案 → 代码/实操 → 易错点 → 面试官追问… · 2026/9/24 17:44:52

enable_shared_from_this:类内部安全拿到 shared_ptr
enable_shared_from_this:类内部安全拿到 shared_ptr

在类的成员函数里,有时需要把「指向自己的 shared_ptr」交给别人——把自己注册进容器、挂到回调里、塞进观察者列表。最危险的写法是直接 std::shared_ptr<T>(this):它编译通过、看着能用,实则埋下 double free(重复释放) 的雷。这篇把雷挖出来,并给出正确解法 st… · 2026/9/24 17:44:52

Python教程-Python中的基本命令 | 魔术命令
Python教程-Python中的基本命令 | 魔术命令

关于在教程里面提到的那些基本命令, 还有魔术命令的具体用法介绍。当它在1991年首次引入的时候, 普遍认为是属于自负风险的类型的一种语言。但是现在的情况已经改变了, 它已经成为了一种主导性的语言, 并且被用于数据科学领域、机器学习领域以及软件开发领域。大家都清楚, 它是… · 2026/9/24 17:44:39

YOLOv5+RealSense D455单目测距实战:从检测框到毫米级深度值的精准映射
YOLOv5+RealSense D455单目测距实战:从检测框到毫米级深度值的精准映射

简介&#xff1a;本资源是一套基于YOLOv5-3.1与Intel RealSense D455深度相机实现的单目测距系统完整源码&#xff0c;面向计算机视觉初学者、嵌入式AI开发者及智能感知项目实践者&#xff0c;解决目标检测与距离估算融合落地的关键问题&#xff0c;适用于机器人避障、工业定位… · 2026/9/24 18:14:18

无人机目标检测数据集与YOLO训练教程:5000张标注图片+划分脚本实战
无人机目标检测数据集与YOLO训练教程:5000张标注图片+划分脚本实战

简介&#xff1a;一套面向无人机视觉应用的目标检测数据集&#xff0c;包含5000张真实场景高清图像&#xff0c;覆盖多种飞行环境与目标形态。数据使用LabelImg标注&#xff0c;标签质量较高&#xff0c;并同时提供VOC&#xff08;xml&#xff09;、COCO&#xff08;json&#… · 2026/9/24 18:14:18

YOLOv8+DeepSORT施工安全检测跟踪实战:从数据集训练到部署避坑指南
YOLOv8+DeepSORT施工安全检测跟踪实战:从数据集训练到部署避坑指南

简介&#xff1a;一套面向施工场景的安全隐患检测与跟踪解决方案&#xff0c;基于YOLOv8与DeepSORT算法&#xff0c;帮助工程管理人员自动识别工人是否佩戴安全帽、穿着反光背心等&#xff0c;并实现持续跟踪预警。资源核心包含1206张已标注图像的目标检测数据集&#xff0c;同… · 2026/9/24 18:14:18

小米8青春版刷安卓11:zip包拆包、备份与刷机全流程解析
小米8青春版刷安卓11:zip包拆包、备份与刷机全流程解析

简介&#xff1a;针对小米8青春版适配Android 11&#xff08;LineageOS 18.1&#xff09;的第三方固件包&#xff0c;面向想升级系统、体验新特性的刷机爱好者。压缩包共13个文件&#xff0c;体积798.3MB&#xff0c;包含系统与vendor分区镜像、增量补丁、分区列表、boot引导镜… · 2026/9/24 18:14:18

你的论文“AI味”为什么洗不掉?不是词换得不够多,是节奏被摸透了
你的论文“AI味”为什么洗不掉?不是词换得不够多,是节奏被摸透了

aigcbiye官网 微信公众号搜一搜 aigcbiye 你有没有遇到过这种事&#xff1a;明明自己逐句写的段落&#xff0c;提交检测之后却被标了一堆红。你怀疑检测系统疯了&#xff0c;但系统没疯。它不是在找你抄了谁&#xff0c;也不是在判断“这到底是不是AI写的”——它在干一件更隐… · 2026/9/24 18:14:18

Python脉象识别系统从源码到实战:信号处理与特征分类全解析
Python脉象识别系统从源码到实战:信号处理与特征分类全解析

简介&#xff1a;这是一套基于Python实现的中医脉象识别系统源码&#xff0c;面向医疗健康领域开发者、科研人员以及对智能诊断感兴趣的Python学习者。系统覆盖从脉象信号采集、去噪滤波、特征提取到模型训练与结果输出的完整流程&#xff0c;内置CNN、RNN等深度学习算法&#… · 2026/9/24 18:14:04

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介&#xff1a;这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源&#xff0c;围绕YOLOv8实现渔船作业监控系统&#xff0c;可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件&#xff0c;约24.21MB&#xff0c;以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介&#xff1a;面向时间序列数据建模的一维卷积神经网络完整实现&#xff0c;适合深度学习入门者及需要快速验证时序模型的研究者&#xff0c;能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小&#xff0c;只有3KB&#xff0c;内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L&#xff0c;而是舌尖上的L最近在几个方言群和语音教学社群里&#xff0c;反复看到有人发一句&#xff1a;“也说字母L&#xff1a;柔软的长舌”。初看以为是英语发音课笔记&#xff0c;点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码