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

f({1, 3})与f(C c)和`f(const C c)

#include <iostream>using namespace std;struct C {int x;int y;
};void f(const C &c) {cout << c.x << ' ' << c.y << endl;
}int main() {f({1, 3});return 0;
}

解释

1. f(const C &c) 可以编译

f(const C &c) 的定义中,const C &c 是一个对 C 类型的 const 引用。这意味着你可以将一个 C 对象传递给 f 函数而不会进行拷贝,同时在函数内部不会修改这个对象。这种做法非常适合用于处理临时对象,因为函数不会修改传入的对象。

2. f(C &c) 无法编译

f(C &c) 的定义中,C &c 是一个对 C 类型的非 const 引用。这要求在调用 f 时传入一个已经存在的 C 对象,因为引用必须绑定到一个可修改的对象上。然而,f({1, 3}); 试图将一个临时对象传递给 f。临时对象(即匿名对象)是不能绑定到一个非 const 引用上。临时对象是不可修改的,因此 C &c 不允许将其绑定到一个临时对象上。

3. 临时对象与引用

在 C++ 中:

  • 常量引用const C & 可以绑定到一个临时对象,因为它不会尝试修改对象。编译器允许这种绑定。
  • 非常量引用C & 不能绑定到临时对象,因为它可能尝试修改对象,而临时对象不能被修改。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 海康gige工业相机无驱动取像突破(c#实现,版本更新,你也可以移植到linux下去用)
  • 从零开始的CPP(36)——操作Excel
  • JS【详解】对象的内部属性 vs 内部方法
  • 【Android Studio】修改项目名称can‘t rename root module解决办法
  • 【Python随笔】比PyQt5更先进的pyside6安装和使用方法
  • 【使用Python和ADB过滤与处理Android包名】
  • SAAMDSSA-系统架构师(五十一)
  • Go开发后端和Vue3开发前端的前后端分离框架中自己手戳一个OA流程审批、工作流引擎给新时代一个漂亮便捷的工作流引擎
  • 验证码案例
  • UE中的运行时Mesh - 学习笔记
  • day16
  • Nginx系列-Nginx Location匹配规则
  • 【鸿蒙学习】Stage模型与FA模型的对比与应用选择
  • Spring Boot 3.x Rest API最佳实践之统一响应结构
  • 作为硬件工程师和射频工程师必备的射频前端冷知识
  • [PHP内核探索]PHP中的哈希表
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Angular 2 DI - IoC DI - 1
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ES6语法详解(一)
  • Mybatis初体验
  • Phpstorm怎样批量删除空行?
  • Vue2.0 实现互斥
  • 诡异!React stopPropagation失灵
  • 使用putty远程连接linux
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 阿里云API、SDK和CLI应用实践方案
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 积累各种好的链接
  • #### golang中【堆】的使用及底层 ####
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #QT(TCP网络编程-服务端)
  • (3)nginx 配置(nginx.conf)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Note)C++中的继承方式
  • (SpringBoot)第二章:Spring创建和使用
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (南京观海微电子)——示波器使用介绍
  • (四)Linux Shell编程——输入输出重定向
  • (四)软件性能测试
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转) RFS+AutoItLibrary测试web对话框
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .gitignore文件设置了忽略但不生效
  • .NET Core 成都线下面基会拉开序幕
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET Micro Framework初体验(二)
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节