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 &,禁止传值,会拷贝,慢,费内存
相关推荐
FlyWIHTSKY18 小时前
React 19 + Next.js 16(App Router)项目中集成 MSW
开发语言·javascript·vue.js
Mr.Daozhi18 小时前
跨境电商选品完整流水线:Google Trends筛词+Meta广告分析,CLI工具设计实战
开发语言·爬虫·python·跨境电商·工具链·选品
多彩电脑18 小时前
Swift里字符串的索引
开发语言·swift
SoftLipaRZC18 小时前
C语言预处理详解:从宏定义到条件编译
c语言·开发语言
会周易的程序员18 小时前
C++ 对象池深度解析:架构设计与实现原理
开发语言·c++·物联网·iot·aiot
lilili也18 小时前
C++:类
c++
L_090718 小时前
【C++】智能指针
开发语言·c++·智能指针
程序猿乐锅18 小时前
【苍穹外卖|Day02】后台接口自测闭环:Token、DTO 与 yml 配置
java·开发语言
春栀怡铃声18 小时前
【C++修仙录02】筑基篇:适配器
c++
冰暮流星18 小时前
javascript之对象的建立-使用Object
开发语言·javascript·ecmascript