为什么c++函数重载时会忽略顶层const而保留底层const呢
这样设计有什么意义吗,能否给出实例来解释这样有什么好处
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已采纳
C++为什么形参会忽略顶层const 保留底层const
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
5条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
threenewbee 2017-11-25 07:38关注顶层const就是这个指针是常量,不能指向别的对象。但是可以改变指针指向的变量的值。 底层const表示这个指针指向的变量是常量,指针可以指向别的对象,但是在指针指向这个变量的时候,不能改变变量值。 形参如果是“顶层const”,那么也就是它不能指向别的对象。然而它指向不指向别的对象,都不会作用在调用者那里。 好比 int a=1; foo(a); void foo(int a) { a = 2; } //改变a,不会作用到调用者那个a 因此事实上忽略不忽略都是忽略了,既然如此,忽略了还能简化代码,提高性能,所以就忽略了。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2022-07-20 08:13回答 1 已采纳 对,auto会忽略掉顶层consthttps://qa.1r1g.com/sf/ask/3226431841/
- 2019-01-15 03:11回答 2 已采纳 throw 表达式初始化一个称为异常对象的特殊对象,由编译器管理并驻留在catch可访问的空间。 而&标号,只不过说可以直接操作这个对象而不是从新copy它。 详细可参考 C++ prime 第1
- 2021-05-07 08:28回答 5 已采纳 就是定义了一个常量指针const char*,名为FUNC_INIT_TRACEBAK_MONITOR,指向字符串常量 "init_tracebak_monitor" 指针地址不可以改变
- 2022-06-06 12:18正在学习C++的小白的博客 形参中的顶层const分为两种情况 1)形参为非指针类型 此时,TestA与TestB的函数是等价的...TestA时,形参为顶层const指不能修改tmp指针的指向,但调用函数会传入一个实参,即指定了tmp的指向,此时的const没有实际意...
- 2023-02-27 05:00回答 2 已采纳 在C++中,lambda表达式中的值捕获(Value Capture)可以通过传值(Capture by Value)或传引用(Capture by Reference)的方式捕获变量。对于传值的方式
- 2023-04-07 00:12回答 2 已采纳 (1) 第二个是否需要const,不同编译器或者同一个编译器的不同警告等级不同。vs2013+以上版本,默认的检查比较严格。 很多图书上基于老版本的,也有不加的 (2) 因为 iostream 这个头
- 2022-10-03 09:18回答 2 已采纳 因为"Zhou"是常量字符串啊,所以如果函数参数不是常量类型,会报错主要原因是你调用时的参数和函数定义的参数类型不一致造成的。你写成 string name = "Zhou";string id =
- 2024-04-05 08:37鞠杉的博客 彻底搞懂 C++ 中的 顶层 const 和 底层 const,分析了 指针常量 和 常量指针与之的关系,分析了 引用 中 const 的使用,总结了 顶层 const 和底层 const 对含有 const 类型转换的公式,理解其实际意义
- 2016-12-18 01:34回答 5 已采纳 因为定义数组的时候必须是个常量啊,你在调用这个函数之前reg数组的大小必须知道,就好比如果写成reg[3],你在调用merge_sort()之前就知道reg的大小是3,这才是所谓的常量,你的len传给
- 2021-12-27 08:57回答 3 已采纳 根据就近原则在main函数中使用的是新申明的变量m和n与外部的m,n无关
- 2021-04-19 03:38回答 8 已采纳 好吧,C++的for_each的用法,你不用纠结了,用起来比较麻烦。你可以理解上面 for (const int val : vec) 是怎么使用的就好! C++for_each的用法: #in
- 2024-12-29 08:22姜太公钓鲸233的博客 在C++中,const关键字可以用于定义常量,它主要有两种使用形式,分别是顶层const和底层const。理解这两种const的作用是掌握C++类型系统的关键。
- 2025-01-22 10:50李狗333的博客 在执行对象拷贝过程中,常量的顶层const不受影响(也就是说可以被忽略),底层const必须一致。
- 2023-03-13 09:18吉安娜.普罗德摩尔的博客 当使用auto进行类型推断时,需要注意和const之间的关系
- 2024-11-19 10:16是帅气的二狗的博客 指针和const:指针本身是否为常量(顶层const)和指针所指的对象是否为常量(底层const)是两个独立的概念。引用和const:所有用于声明引用的const都是底层const,表示引用的对象是常量。复合const表示指针本身是...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司