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 &,禁止传值,会拷贝,慢,费内存
相关推荐
YYYing.1 小时前
【Linux/C++网络篇(二) 】TCP并发服务器演进史:从多进程到Epoll的进化指南
linux·服务器·网络·c++·tcp/ip
Pocker_Spades_A1 小时前
Python快速入门专业版(五十六)——爬虫会话管理:Cookie与Session原理及实战(保持登录状态)
开发语言·爬虫·python
MwEUwQ3Gx1 小时前
深入理解 Java Deque 的设计哲学
java·开发语言·python
张人玉1 小时前
C#程序设计编程二维码识别程序
开发语言·c#·二维码
摸鱼仙人~1 小时前
前端开发中“共享预览链接”场景-企业级最简方案:Vue + 极简后端(2 接口 1 张表)
前端·javascript·vue.js
sheng42041 小时前
小记近期C++遇到的坑
c++
wregjru1 小时前
【高并发服务器项目】1.服务器接入层代码详解
c++
森G1 小时前
41、数据库---------事件系统
c++·qt
吴声子夜歌1 小时前
Node.js——dns模块
开发语言·node.js·php