C++传递参数时什么情况下传递引用

小数据类型如 int、float、pointer 直接传值比传递引用更快、更安全、代码更简洁,只有大对象如vector、Mat、结构体、string等才需要传递引用(const T&),下面介绍其核心原因

先看大小


复制代码
 float:4个字节

引用:本质上是指针,在64为系统中占用8个字节

结论:穿float比传递引用更快、更省空间

传值更快


cpu处理小数据时的做法(如int、float):

复制代码
1. 直接放进寄存器

2. 0内存访问

3. 速度极快

如果传递引用:

复制代码
1. cpu必须去内存读取指针

2. 解引用

3. 多一次间接访问,相比之下更慢

工业级规则


复制代码
* 小于等于8字节的类型,一律传值

* 大于8字节的类型,一律传递 const &

最终工业级铁律


复制代码
1. int/float/double/指针:直接传值,不需要 &,不需要 const &

2. vector/Mat/大结构体/string:必须传递 const &,禁止传值,会拷贝,慢,费内存
相关推荐
天平7 小时前
油猴脚本创建webworker踩坑记录
前端·javascript·typescript
山河木马13 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林81814 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
kyriewen16 小时前
别再每次都 Google 了:我整理了前端日常最常踩的 10 个 Git 坑,附速查表
前端·javascript·git
SmartBoyW17 小时前
深入ECMAScript规范:彻底搞懂JS隐式类型转换与底层ToPrimitive机制
前端·javascript
用户8524950718418 小时前
解密 JavaScript 中的 this:谁才是真正的调用者?
javascript·面试
Heo18 小时前
Vite进阶用法详解
前端·javascript·面试
铁皮饭盒19 小时前
Next.js 风格路由内置?Bun FileSystemRouter 凭啥这么香
javascript
小林ixn20 小时前
别再背八股了!从 5 个真实场景彻底搞懂 JavaScript 的 this
javascript
东风破_21 小时前
JavaScript 面试常考的字符串算法:从反转字符串到回文判断
前端·javascript