新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/11/14 17:36:45来源:尧图网络
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 不会忽略,构成重载。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/14 3:51:47

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/14 3:51:43

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉