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 &,禁止传值,会拷贝,慢,费内存
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
简要对比C语言中的truncate()函数与ftruncate()函数
这篇文章主要介绍了C语言中的truncate()函数与ftruncate()函数的简要对比,注意其之间的区别,需要的朋友可以参考下2015-09-09
深入探讨linux下进程的最大线程数、进程最大数、进程打开的文件数
本篇文章是对linux下进程的最大线程数、进程最大数、进程打开的文件数进行了详细的分析介绍,需要的朋友参考下2013-05-05


最新评论