C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++传递参数传递引用

C++传递参数时哪种情况下传递引用

作者:追光的蜗牛丿

还在纠结C++函数参数该传值还是传引用?本文告诉你,int、float、指针等小类型直接传值更快更安全,而vector、Mat、大结构体、string等大对象必须用const引用避免拷贝,掌握这条工业级规则,写出高性能代码

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

下面介绍其核心原因:

先看大小

传值更快

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

1. 直接放进寄存器

2. 0内存访问

3. 速度极快

如果传递引用:

1. cpu必须去内存读取指针

2. 解引用

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

工业级规则

* 小于等于8字节的类型,一律传值

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

最终工业级铁律

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

2. vector/Mat/大结构体/string:必须传递 const &,禁止传值,会拷贝,慢,费内存

​总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文