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 &,禁止传值,会拷贝,慢,费内存
相关推荐
灵感__idea3 小时前
Hello 算法:“走一步看一步”的智慧
前端·javascript·算法
清水白石0084 小时前
Python 编程实战全景:从基础语法到插件架构、异步性能与工程最佳实践
开发语言·python·架构
Mh5 小时前
我决定写一个 3D 地球仪来记录下我要去的地方
前端·javascript·动效
. . . . .6 小时前
ref、useRef 和 forwardRef
前端·javascript·react.js
Halo_tjn6 小时前
Java 基于字符串相关知识点
java·开发语言·算法
梦想的颜色6 小时前
java 利用redis来限制用户频繁点击
java·开发语言
报错小能手6 小时前
Swift 并发 Combine响应式框架
开发语言·ios·swift
柚子8167 小时前
break跳出语句块的神奇技巧
前端·javascript
万法若空7 小时前
C++ <memory> 库全方位详解
开发语言·c++
代码中介商7 小时前
C++ 类型转换深度解析:static_cast、dynamic_cast、const_cast、reinterpret_cast
开发语言·c++