将参数作为 const 引用与普通引用传递[重复]

2023-12-01

可能的重复:
为什么非常量引用不能绑定到临时对象?

有这样的代码:

void fun_ref(int& par){}

void fun_const_ref(const int& par){}

int main(){

  //fun_ref(2); error: invalid initialization of non-const reference of type ‘int&’ from a temporary of type ‘int’
  fun_const_ref(2);

  char var = 3;
  //fun_ref(var); error: invalid initialization of reference of type ‘int&’ from expression of type ‘char’
  fun_const_ref(var);
  return 0;
}

为什么常量引用可以传递右值和与函数参数类型不同的数据类型,但非常量引用却不能?


当参数是 const 引用并且传递的参数不是该类型但存在到该类型的隐式转换时,实现会将值保存在临时变量中并使用此类临时变量作为参数。所以 const 版本没有引用char var but to int __temp.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将参数作为 const 引用与普通引用传递[重复] 的相关文章

随机推荐

  • 如何使用新的 HTML5 Boilerplate 来定位 IE9?

    我正在尝试为 IE 指定一个类 但是 由于样板模板已更改 因此不再有效 myclass do something ie7 myclass do something 这是样板模板的新标题中的内容
  • JavaMail base64 编码

    我有一些 Java 代码 它会发送一封电子邮件 代码如下 MimeBodyPart part new MimeBodyPart part setContent htmlString text html charset UTF 8 part
  • 如何解决 Rails 插件上的 rake 任务弃用问题?

    由于引入的概念here Rails Plugin 只不过是一个 Rails Engine 但由于它已加载 在启动过程中为时已晚 它确实 不具有相同的配置权力 作为一个裸露的 Rails Engine 与 Rails Railtie 相对并且
  • NestJS/TypeORM:无法设置只有 getter 的 # 的属性元数据

    我尝试运行我的 Nestjstutorial 应用程序 显示以下错误 我的后端连接到 PostgreSQL 数据库 TypeError 无法设置只有 getter 的 属性元数据 在 EntityManager getCustomRepos
  • 使用代码默认值对集合属性进行 XML 反序列化

    对于应用程序配置 我经常会创建一个配置类 其中包含应用程序的配置值 然后将其反序列化为要使用的对象 配置对象通常与用户界面控件进行数据绑定 以便用户可以更改和保留配置 配置类通常具有分配给属性的默认值 以便始终存在默认配置 这效果很好 我最
  • Prolog - 将列表的偶数元素乘以数字 (F)

    我正在 Prolog 中编程 从任何给定的数字 F 开始 将列表中的偶数元素相乘 保留那些不是的值 开发了以下内容 实际上程序 编译 没有任何错误 但在输入值时它只返回 false 我哪里可能错了 base case evenproduct
  • 禁用 Pygame 控制台输出 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在Python中抑制控制台输出 目前我正在使用 pygame 读取操纵杆输入 我需要解决以下问题 当调用操纵杆模块中的函数时 例如get axis or get button 该函数打印出诸如SD
  • ListView 项目的原始坐标

    我有以下问题 在我的布局上 我有一个操作栏 例如 高度为 150dp 其余的是 ListView 我可以从操作栏中获取一些视图并将其拖动到列表视图上 拖动是通过windowsmanager实现的 所以当拖动时我得到原始Y坐标 现在 我想将
  • 在Python中证明傅里叶变换运算

    我有一个时域表达式 f 1j H t exp 1j a b t 可以使用解析傅立叶变换已知属性 H是亥维赛阶跃函数 该 FT 运算的结果是 F w a 1j b w a 2 b 2 where w是频率 现在我正在使用中的提示本文进行数值傅
  • iPhone Codesign 目标文件格式无效或不合适

    我不小心删除了 xcode 中的目标 所以我创建了一个具有完全相同名称的新项目 在目标设置中 我再次选择了正确的代码签名身份 但现在我无法再为该设备进行编译了 一旦我想构建 我就会得到 CodeSign build Release ipho
  • 我可以使用 ADO.Net 实体框架延迟加载标量属性吗?

    我有一个数据库表Image有一根巨大的柱子 Data 我宁愿延迟加载这一列 这样当我获得所有图像的列表时 我就不会查询所有内容 我知道我可以将数据放入其自己的列和实体中 如下所示 但是 我必须这样做吗 是的 我相信你确实必须这样做 我认为
  • 适用于 Excel 2007 和 2010 的 Excel 插件

    我正在编写一个可以在 2007 和 2010 中运行的 Excel 插件 当我使用 Visual Studio 创建新项目时 我需要决定我想要哪个版本 我之前选择了2007 但由于我安装了2010 所以无法调试它 我收到错误 您无法调试或运
  • 使用 JGit 与上次提交进行文件比较

    我正在尝试使用 JGit 来获取文件从上次提交到最近未提交更改的差异 我怎样才能用 JGit 做到这一点 使用命令行的输出是git diff HEAD 经过多次讨论 link1 link2 我附带了一段代码 能够找到未提交的文件 但我无法得
  • 在c#中添加progressBar来查看进程的进度百分比

    这是关于我的流程的代码 StreamReader outputReader null StreamReader errorReader null ProcessStartInfo processStartInfo new ProcessSt
  • Bower安装EACCESS错误

    我尝试从 Bower json bower install 安装依赖项时遇到此错误 但我不知道它是什么或如何修复它 任何帮助将不胜感激 deniz946 UbuntuOS Desktop meanapp client resourcejs
  • Spring boot - 使用动态 TTL 周期驱逐缓存

    从我的微服务 SERVICE A 中 我对另一个微服务 SERVICE B 进行了其余 api 调用以进行登录并获取访问令牌 该 API 将使用该令牌的 TTL 进行响应 我需要缓存令牌 直到 SERVICE B 响应的 TTL 秒 为止
  • XML 解析难题

    更新 我重新设计了这个问题 以显示我所取得的进展 也许可以更容易回答 更新 2 我已向 XML 添加了另一个值 每个 zip 中都提供扩展 每个项目可以有多个由选项卡分隔的项目 所以它的结构将是这样的 平台 gt 分机 子组 gt 名称 g
  • 在android中实现pdf.js从sd卡读取

    我正在尝试为我的 Android 应用程序实现一个 pdf 查看器 它显示 SD 卡中存在的不同 pdf 文件 我正在考虑使用 pdf js 库 我使用了此处发布的代码示例 https bitbucket org butelo pdfvie
  • 在嵌套组件孙子组件和根组件之间发出事件

    I have wheels component嵌套到car component 轮子 组件 export class WheelsComponent Output onLoaded EventEmitter
  • 将参数作为 const 引用与普通引用传递[重复]

    这个问题在这里已经有答案了 可能的重复 为什么非常量引用不能绑定到临时对象 有这样的代码 void fun ref int par void fun const ref const int par int main fun ref 2 er